前言:
像我们程序员遇到最多的就是需求变更,变更了需求,可能涉及到数据库的变更,每次copy底层代码,说实在的很烦,都是些无脑的工作,所以就封装了下底层,此底层是依靠Dapper来封装的,希望能给大家带来一定的帮助。
项目结构:
采用的是简单三层,感兴趣的可以再次封装。
项目介绍:
Web:
此模块主要是为了展示底层方法的调用,给大家展示的Demo。
Model:
这里保存的是一个个数据库是实体类。
需要注意一下几点:
- 每个Class请标注对应的数据库表名,如:[Table("City")]
- 此外,数据库的主键字段请标注[Key]
上面这两点主要是用于底层的一些方法。
Dal:
- DBConfig中主要是数据库的配置,设计的时候考虑了一下读写分离,所以用了2个配置。
- DapperHelper底层的核心代码封装,一些简单的增查删改的方法的封装,一般场景的当表操作应该是够了的。
Bll:
- 这里核心代码就只有一个BaseBll,用于关联Dal底层方法的。
- 后续新增的所有Bll请都继承BaseBll即可使用,如:CityBll : BaseBll<City>,这里的City和CityModel
使用教程:
/// <summary>
/// 查询所有
/// </summary>
/// <returns></returns>
public async Task<List<City>> GetCityAll()
{
var list = await cityBll.GetListByfilterAsync(new City ());
return list;
}
/// <summary>
/// 带条件查询集合
/// </summary>
/// <param name="cityCode"></param>
/// <returns></returns>
public async Task<List<City>> GetCityAll(string cityCode)
{
var list = await cityBll.GetListByfilterAsync(new City() {CityCode= cityCode },
new List<string> { "CityCode" } );
return list;
}
/// <summary>
/// 新增,新增后的id在model中
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public async Task<City> Create(City cityModel)
{
//返回是否新增成功
var result = await cityBll.InsertAsync(cityModel);
return cityModel;
}
/// <summary>
/// 根据主键id修改
/// </summary>
/// <param name="cityModel"></param>
/// <returns></returns>
public async Task<City> UpdateById(City cityModel)
{
var result = await cityBll.UpdateByPrimaryKeyAsync(cityModel);
return cityModel;
}
/// <summary>
/// 根据条件修改部分值
/// </summary>
/// <param name="cityModel"></param>
/// <returns></returns>
public async Task<City> Update(City cityModel)
{
var result = await cityBll.UpdateByBatch(cityModel,new List<string>() { "要修改的列"},new City (){CityCode="Where的值" },new List<string> { "Where的列(CityCode)" });
//例如此处根据code1修改name为上海
cityModel.CityCode = "1";
cityModel.CityName = "上海";
var result1 = await cityBll.UpdateByBatch(cityModel, new List<string>() { "CityName" }, new City() { CityCode = cityModel.CityCode }, new List<string> { "CityCode" });
return cityModel;
}
/// <summary>
/// 根据主键删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<bool> Delete(int id)
{
//根据主键id删除
var result = await cityBll.DeleteByPrimaryKeyAsync(id);
return result;
}
/// <summary>
/// 根据设置的条件删除
/// </summary>
/// <param name="cityCode"></param>
/// <returns></returns>
public async Task<bool> Delete(string cityCode)
{
//根据主键id删除
var result = await cityBll.DeleteByFilterAsync(new City() { CityCode=cityCode},
new List<string>() { "CityCode" });
return result;
}
代码已经上传了,大家可以下载看看,一起学习,一起进步