.net core 2.2webapi+SqlSugar ORM搭建基本的框架
第一步 创建项目,并添加相关的组件包
创建.net core的项目过程和添加引用包这里我就不写出来了,自行解决。
第二步 创建数据层
1创建数据连接
第三步 创建仓储,为了便于以后的扩展建议多建一个类库用作自定义仓储,我这里快速就创建在数据层了
1定义仓储接口 接口定义未常用的操作方法就行了
2实现仓储业务
/// <summary>
/// 仓储实现层
/// </summary>
/// <typeparam name="T"></typeparam>
public class Repository<T> : DbSqlContext,IRepository<T> where T : class, new()
{
/// <summary>
/// 构造参数
/// </summary>
/// <param name="configure"></param>
public Repository(IConfiguration configure):base(configure)
{
}
/// <summary>
/// 添加数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int Add(T model)
{
return Db.Insertable(model).ExecuteCommand();
}
/// <summary>
/// 添加数据并返回主键
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int RetuIdAdd(T model)
{
return Db.Insertable(model).ExecuteReturnIdentity();
}
/// <summary>
/// 添加数据并返回插入的实体
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public T RetuEntityAdd(T model)
{
return Db.Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 根据条件查询对象
/// </summary>
/// <param name="WhereLambda"></param>
/// <returns></returns>
public T DataItem(Expression<Func<T, bool>> WhereLambda)
{
return Db.Queryable<T>().Where(WhereLambda).Single();
}
/// <summary>
/// 根据条件分页查询列表
/// </summary>
/// <param name="PageIndex"></param>
/// <param name="PageSize"></param>
/// <param name="WhereLambda"></param>
/// <returns></returns>
public List<T> DataPages(Expression<Func<T, bool>> WhereLambda,int pageIndex,int pageSize)
{
return Db.Queryable<T>().Where(WhereLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
/// <summary>
/// 根据条件查询列表
/// </summary>
/// <param name="WhereLambda"></param>
/// <returns></returns>
public List<T> GetList(Expression<Func<T, bool>> WhereLambda)
{
return Db.Queryable<T>().Where(WhereLambda).ToList();
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <returns></returns>
public List<T> GetList()
{
return Db.Queryable<T>().ToList();
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="WhereLambda"></param>
/// <returns></returns>
public int Delete(Expression<Func<T, bool>> WhereLambda)
{
return Db.Deleteable<T>(WhereLambda).ExecuteCommand();
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int Update(T model)
{
return Db.Updateable<T>(model).ExecuteCommand();
}
public int Update(List<T> list)
{
return Db.Updateable(list).ExecuteCommand();
}
/// <summary>
/// 查询总记录数
/// </summary>
/// <param name="WhereLambda"></param>
/// <returns></returns>
public int DataCount(Expression<Func<T, bool>> WhereLambda)
{
return Db.Queryable<T>().ToList().Count;
}
/// <summary>
/// 查询总记录数
/// </summary>
/// <param name="conModels"></param>
/// <returns></returns>
public int DataCount(List<IConditionalModel> conModels)
{
return Db.Queryable<T>().Where(conModels).Count();
}
/// <summary>
/// 批量删除
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int Delete(dynamic[] ids)
{
return Db.Deleteable<T>(ids).ExecuteCommand();
}
}
第四步 关键点 在web层的Startup注入仓储和业务层
//业务层注入
Assembly assemblys = Assembly.Load("QuestionnaireSurvey.BLL");
Assembly assemblysInterFace = Assembly.Load("QuestionnaireSurvey.IBLL");
var typesInterface = assemblysInterFace.GetTypes();
var typesImpl = assemblys.GetTypes();
foreach (var item in typesInterface)
{
var name = item.Name.Substring(1);
string implBLLImpName = name + "Server";
var impl = typesImpl.FirstOrDefault(w => w.Name.Equals(implBLLImpName));
if (impl != null)
{
services.AddTransient(item, impl);
}
}
//注入数据层
services.AddTransient(typeof(DbSqlContext));
//注入仓储
services.AddTransient(typeof(IRepository<>), typeof(Repository<>));
第五步 调用
/// <summary>
/// 业务层 处理业务
/// </summary>
public class ArtcleBLLServer : IArtcleBLL
{
/// <summary>
/// 声明要调用的仓储
/// </summary>
public IRepository<Artcle> _respond;
/// <summary>
/// 构造参数
/// </summary>
/// <param name="respond"></param>
public ArtcleBLLServer(IRepository<Artcle> respond)
{
_respond = respond;
}
/// <summary>
/// 查询所有数据
/// </summary>
/// <returns></returns>
public List<Artcle> GetAll()
{
return _respond.GetList();
}
}
简单的.net core api+仓储+SqlSugar MOR框架就搭建好了