标签:
后端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