标签:
后端API
1.数据访问工厂类定义
/// <summary> /// 仓库工厂类 /// </summary> /// <typeparam name="TContext">DbContext类型</typeparam> /// <typeparam name="TEntity">实体类型</typeparam> public class RepositoryFactory<TContext, TEntity> where TContext : DbContext, new() where TEntity : class { public static EdmRepository<TContext, TEntity> CreateRepository() { return new EdmRepository<TContext, TEntity>(); } public static EdmRepository<TContext, TEntity> CreateRepository(String connectionName) { return new EdmRepository<TContext, TEntity>(connectionName); } } /// <summary> /// 仓库工厂类 /// </summary> /// <typeparam name="TContext">DbContext类型</typeparam> public class RepositoryFactory<TContext> where TContext : DbContext, new() { public static EdmRepository<TContext> CreateRepository() { return new EdmRepository<TContext>(); } public static EdmRepository<TContext> CreateRepository(String connectionName) { return new EdmRepository<TContext>(connectionName); } }仓库接口定义
/// <summary> /// 仓库接口 /// </summary> public interface IRepository : IDisposable { /// <summary> /// 根据SQL语句返回实体列表 /// </summary> /// <typeparam name="T">实体类型</typeparam> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数列表</param> /// <returns>实体列表</returns> IEnumerable<T> SqlQuery<T>(string sql, params object[] parameters); /// <summary> /// 根据SQL语句查询结果 /// </summary> /// <param name="sql">SQL语句</param> /// <returns></returns> object ExecuteScalar(string sql); /// <summary> /// 执行SQL语句 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数列表</param> /// <returns></returns> int ExecuteSqlCommand(string sql, params object[] parameters); } /// <summary> /// 仓库接口 /// </summary> /// <typeparam name="TEntity">实体类型</typeparam> public interface IRepository<TEntity> : IRepository where TEntity : class { /// <summary> /// 新增方法 /// </summary> /// <param name="entity">实体对象</param> /// <returns></returns> int Add(TEntity entity); /// <summary> /// 更新方法 /// </summary> /// <param name="entity">实体对象</param> /// <returns></returns> int Update(TEntity entity); /// <summary> /// 删除方法 /// </summary> /// <param name="entity">实体对象</param> /// <returns></returns> int Delete(TEntity entity); /// <summary> /// 根据ID获取实体 /// </summary> /// <typeparam name="TID">ID类型</typeparam> /// <param name="id">ID</param> /// <returns>实体对象</returns> TEntity Get<TID>(TID id); /// <summary> /// 获取整个表数据 /// </summary> /// <returns></returns> IQueryable<TEntity> GetAll(); /// <summary> /// 根据查询条件返回实体列表 /// </summary> /// <param name="conditions"></param> /// <returns></returns> IQueryable<TEntity> Search(List<Condition> conditions); /// <summary> /// 根据SQL语句返回实体列表 /// </summary> /// <param name="sql">SQL语句</param> /// <param name="parameters">参数列表</param> /// <returns></returns> DbSqlQuery<TEntity> SqlQuery(string sql, params object[] parameters); }声明仓库
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { }新增方法实例
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { mng_department dept = new mng_department(); repository.Add(dept); }更新方法实例
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { int id = 1; mng_department dept = repository.Get(id); dept.Dep_DeptName = "Test"; repository.Update(dept); }删除方法实例
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { int id = 1; mng_department dept = repository.Get(id); repository.Delete(dept); }根据ID查询
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { int id = 1; mng_department dept = repository.Get(id); }根据具体条件查询
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { string deptName = "Test"; var list = repository.GetAll().Where(p => p.Dep_DeptName.Contains(deptName)); }根据SQL语句查询(不推荐使用)
using (IRepository repository = RepositoryFactory<PSADataEntities>.CreateRepository()) { var list = repository.SqlQuery<mng_department>("SELECT * FROM dbo.mng_department WHERE Dep_Id=1").ToList(); }查询条件封装
/// <summary> /// 查询条件帮助类 /// </summary> /// <typeparam name="TModel">实体类型</typeparam> public class ConditionHelper<TModel> : ConditionHelper { /// <summary> /// 构造函数 /// </summary> /// <param name="model">实体对象</param> public ConditionHelper(TModel model); #region Generic AddCondition Helper /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="op">操作符</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Operator op); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="valueField">值表达式</param> /// <param name="op">操作符</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Expression<Func<TModel, TProperty>> valueField, Operator op); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="value">值</param> /// <param name="op">操作符</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, TProperty value, Operator op); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Operator op, Relation relation); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> /// <param name="perfix">层次</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Operator op, Relation relation, int perfix); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="valueField">值表达式</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Expression<Func<TModel, TProperty>> valueField, Operator op, Relation relation); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="value">值</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, TProperty value, Operator op, Relation relation); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="valueField">值表达式</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> /// <param name="prefix">层次</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, Expression<Func<TModel, TProperty>> valueField, Operator op, Relation relation, int prefix); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="value">值</param> /// <param name="op">操作符</param> /// <param name="relation">条件关系and or</param> /// <param name="prefix">层次</param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, TProperty value, Operator op, Relation relation, int prefix); /// <summary> /// 添加查询条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="listValue">值列表</param> /// <param name="op"></param> /// <param name="relation"></param> /// <param name="prefix"></param> public void AddConditionFor<TProperty>(Expression<Func<TModel, TProperty>> field, List<TProperty> listValue, Operator op = Operator.IN, Relation relation = Relation.And, int prefix = 0); #endregion /// <summary> /// 添加排序条件 /// </summary> /// <typeparam name="TProperty">字段类型</typeparam> /// <param name="field">字段表达式</param> /// <param name="sort">排序类型asc desc</param> public void AddSortFieldFor<TProperty>(Expression<Func<TModel, TProperty>> field, Sort sort = Sort.ASC); }使用查询条件实例
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { mng_department model = new mng_department(); ConditionHelper<mng_department> helper = new ConditionHelper<mng_department>(model); helper.AddConditionFor(m => m.Dep_DeptName, "Test", Operator.Equal); helper.AddSortFieldFor(m => m.Dep_Id, Sort.ASC); var sc = helper.GetSearchCondition(); var list = repository.GetAll().WhereUsingConditions(sc.Conditions) .OrderUsingSortExpression(sc.SortExpression).ToList(); }对象映射
/// <summary> /// 对象映射帮助类 /// </summary> public static class ObjectMapHelper { /// <summary> /// 映射方法 /// </summary> /// <typeparam name="FromEntity">源对象类型</typeparam> /// <typeparam name="ToEntity">目标对象类型</typeparam> /// <param name="from">源对象</param> /// <returns>目标对象</returns> public static ToEntity Map<FromEntity, ToEntity>(FromEntity from) { return ObjectMapperManager.DefaultInstance.GetMapper<FromEntity, ToEntity>().Map(from); } /// <summary> /// 映射方法 /// </summary> /// <typeparam name="FromEntity">源对象类型</typeparam> /// <typeparam name="ToEntity">目标对象类型</typeparam> /// <param name="from">源对象</param> /// <param name="to">目标对象</param> /// <returns>目标对象</returns> public static ToEntity Map<FromEntity, ToEntity>(FromEntity from, ToEntity to) { return ObjectMapperManager.DefaultInstance.GetMapper<FromEntity, ToEntity>().Map(from, to); } /// <summary> /// 映射方法 /// </summary> /// <param name="from">源对象类型</param> /// <param name="to">目标对象类型</param> /// <param name="fromObj">源对象</param> /// <returns>目标对象</returns> public static Object Map(Type from, Type to, Object fromObj) { return ObjectMapperManager.DefaultInstance.GetMapperImpl(from, to, null).Map(fromObj); } }对象映射实例
using (IRepository<mng_Dictionary> repository = RepositoryFactory<PSADataEntities, mng_Dictionary>.CreateRepository()) { int id = 1; mng_Dictionary dic = repository.Get(id); DictionaryModel model = ObjectMapHelper.Map<mng_Dictionary, DictionaryModel>(dic); }PageList实例
using (IRepository<mng_department> repository = RepositoryFactory<PSADataEntities, mng_department>.CreateRepository()) { mng_department model = new mng_department(); ConditionHelper<mng_department> helper = new ConditionHelper<mng_department>(model); helper.AddConditionFor(m => m.Dep_DeptName, "Test", Operator.Like); helper.AddSortFieldFor(m => m.Dep_Id, Sort.ASC); var sc = helper.GetSearchCondition(); int pageIndex = 1; int pageSize = 10; var list = repository.GetAll().WhereUsingConditions(sc.Conditions); int count = list.Count(); PagedList<mng_department> pageList = list.OrderUsingSortExpression(sc.SortExpression) .Skip((pageIndex - 1) * pageSize).Take(pageSize).ToPagedList(pageIndex, pageSize, count); }2.邮件发送
/// <summary> /// 邮件发送帮助类 /// </summary> public static class MailHelper { #region 发送Html邮件 /// <summary> /// 发送Html格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailImagePaths">邮件内嵌图片物理路径</param> /// <returns></returns> public static bool SendHtmlMail(List<MailAddress> mailTo, String mailSubject, String mailBody); /// <summary> /// 发送Html格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailImagePaths">邮件内嵌图片物理路径</param> /// <returns></returns> public static bool SendHtmlMail(List<MailAddress> mailTo, String mailSubject, String mailBody, List<String> mailImagePaths, List<String> mailAttachemtnPaths); /// <summary> /// 发送Html格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailCC">抄送人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailImagePaths">邮件内嵌图片物理路径</param> /// <returns></returns> public static bool SendHtmlMail(List<MailAddress> mailTo, List<MailAddress> mailCC, String mailSubject, String mailBody, List<String> mailImagePaths, List<String> mailAttachemtnPaths); /// <summary> /// 发送Html格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailCC">抄送人列表</param> /// <param name="mailBcc">暗送人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailImagePaths">邮件内嵌图片物理路径</param> /// <param name="mailAttachemtnPaths">邮件附件文件路径</param> /// <returns></returns> public static bool SendHtmlMail(List<MailAddress> mailTo, List<MailAddress> mailCC, List<MailAddress> mailBcc, String mailSubject, String mailBody, List<String> mailImagePaths, List<String> mailAttachemtnPaths); #endregion #region 发送Text邮件 /// <summary> /// 发送Text格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <returns></returns> public static bool SendTextMail(List<MailAddress> mailTo, String mailSubject, String mailBody); /// <summary> /// 发送Text格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailAttachemtnPaths">邮件附件文件路径</param> /// <returns></returns> public static bool SendTextMail(List<MailAddress> mailTo, String mailSubject, String mailBody, List<String> mailAttachemtnPaths); /// <summary> /// 发送Text格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailCC">抄送人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailAttachemtnPaths">邮件附件文件路径</param> /// <returns></returns> public static bool SendTextMail(List<MailAddress> mailTo, List<MailAddress> mailCC, String mailSubject, String mailBody, List<String> mailAttachemtnPaths); /// <summary> /// 发送Text格式邮件 /// </summary> /// <param name="mailTo">收件人列表</param> /// <param name="mailCC">抄送人列表</param> /// <param name="mailBcc">暗送人列表</param> /// <param name="mailSubject">邮件主题</param> /// <param name="mailBody">邮件正文</param> /// <param name="mailAttachemtnPaths">邮件附件文件路径</param> /// <returns></returns> public static bool SendTextMail(List<MailAddress> mailTo, List<MailAddress> mailCC, List<MailAddress> mailBcc, String mailSubject, String mailBody, List<String> mailAttachemtnPaths); #endregion }邮件发送实例
System.Net.Mail.MailAddress address = new System.Net.Mail.MailAddress("qinghub@isoftstone.com"); iPSA.Extensions.Helper.MailHelper.SendHtmlMail(new List<System.Net.Mail.MailAddress>() { address }, "邮件标题", "邮件正文");3.Excel操作
/// <summary> /// Excel操作帮助类 /// </summary> public class ExcelHelper { /// <summary> /// 导出Excel /// </summary> /// <param name="filepath">导出文件路径</param> /// <param name="dt">导出DataTable</param> public static void WriteExcel(String filepath, DataTable dt); /// <summary> /// 导出Excel /// </summary> /// <param name="stream">导出文件流</param> /// <param name="dt">导出DataTable</param> public static void WriteExcel(Stream stream, DataTable dt); /// <summary> /// 导出Excel /// </summary> /// <param name="filepath">导出文件路径</param> /// <param name="ds">导出DataSet</param> public static void WriteExcel(String filepath, DataSet ds); /// <summary> /// 导出Excel /// </summary> /// <param name="stream">导出文件流</param> /// <param name="ds">导出DataSet</param> public static void WriteExcel(Stream stream, DataSet ds); /// <summary> /// 导入Excel /// </summary> /// <param name="filepath">导入文件路径</param> /// <param name="sheetName">sheet名称</param> /// <returns></returns> public static DataTable ReadExcel(String filepath, String sheetName); /// <summary> /// 导入Excel /// </summary> /// <param name="stream">导入文件流</param> /// <param name="sheetName">sheet名称</param> /// <returns></returns> public static DataTable ReadExcel(Stream stream, String sheetName); }导出Excel实例
DataTable dt = new DataTable(); dt.Columns.Add("序号"); dt.Columns.Add("员工编号"); dt.Columns.Add("员工名称"); DataRow dr = dt.NewRow(); dr["序号"] = "1"; dr["员工编号"] = "11852"; dr["员工名称"] = "胡青"; dt.Rows.Add(dr); using (MemoryStream ms = new MemoryStream()) { ExcelHelper.WriteExcel(ms, dt); }导入Excel实例
DataTable dt = ExcelHelper.ReadExcel("C:\\TextExcel.xlsx", "sheet1");
标签:
原文地址:http://www.cnblogs.com/qinghub/p/5416886.html