手机版

在ASP.NET MVC 5网站开发中实现数据存储层功能(3)

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

数据存储层在Ninesky项目中实现。DataLibrary,整个项目只有一个类Repository。

在Repository中,业务逻辑层可以调用增加、删除、变更、查询等方法,主要功能如下:

具体步骤

首先,添加对实体框架的引用

1.打开解决方案,选择项目Ninesky。数据库,右键单击引用,然后选择管理NuGet包。

在NuGet包管理器的浏览选项卡中单击EntityFramework,然后单击右列中的安装按钮。

在搜索框输入EntityFramework.zh-Hans安装假肢中文资源包。

第二,实现数据仓库类

打开解决方案,选择项目尼尼微。DataLibrary,将Class1.cs重命名为Repository.cs,并使用System添加。数据.单据头中的实体;将类名重命名为公共类存储库。更改为公共类存储库t,其中t:类

1.DbContext属性

添加以下公共代码DbContext DbContext { get设置;}

2、建造师

添加一个足够高的函数,直接通过DbContex。

public Repository(){ } public Repository(DbContext DbContext){ DbContext=DbContext;} 3.查找实体方法查找

Find过载了。这两种方法可以分别通过ID和lamdba表达式来查找实体。

///summary///find entity////summary//param name=' id ' entity主键值/param///returns/returns public tfind(int id){ return db context . sett()。find(id);}///summary///find entity/////summary//param name=' where ' query Lambda expression/param///returns/returns public tfind(expression funct,bool where){ return db context . sett()。singleordefault(其中);}4.查找实体列表方法查找列表

根据需要多次重载查找列表

///摘要///查找实体列表////summary///returns/returns public IQueryableT find list(){ return DbContext .SetT();} ///摘要///查找实体列表////summary///type param name=' TKeY '排序建类型/typeparam ///param名称='订单'排序表达式/param ///param名称='asc '是否正序/param///returns/returns public IQueryableT FindListTKey(表达式onfunt,TKey order,bool asc) { return asc?数据库上下文.SetT().OrderBy(order) : DbContext .SetT().以.排序降序;} ///摘要///查找实体列表////summary///type param name=' TKeY '排序键类型/typeparam ///param名称='订单'排序键/param ///param名称='asc '是否正序/param ///param名称='数字'获取的记录数量/param///returns/returns public IQueryableT FindListTKey(表达式onfunc,TKey order,bool asc,int number) { return asc?数据库上下文.SetT().OrderBy(订单)。取(数): DbContext .SetT().以.排序降序(顺序)。取(数);} ///摘要///查找实体列表////summary ///param name='where '查询希腊字母的第11个表达式/param///returns/returns public IQueryableT查找列表(表达式onfunct,bool where) { return DbContext .SetT().哪里(哪里);} ///摘要///查找实体列表////summary ///param name='where '查询希腊字母的第11个表达式/param ///param名称='数字'获取的记录数量/param///returns/returns public IQueryableT查找列表(表达式onfunct,bool where,int number) { return DbContext .SetT().哪里。取(数);} ///摘要///查找实体列表////summary///type param name=' TKeY '排序键类型/typeparam ///param名称='在哪里'查询希腊字母的第11个表达式/param ///param名称='订单'排序键/param ///param名称='asc '是否正序/param///returns/returns public IQueryableT FindListTKey(expression func,bool where,expression func,TKey order,bool asc) { return asc?数据库上下文.SetT().哪里OrderBy(order) : DbContext .SetT().哪里订单方降序;} ///摘要///查找实体列表////summary///type param name=' TKeY '排序键类型/typeparam ///param名称='在哪里'查询希腊字母的第11个表达式/param ///param名称='订单'排序键/param ///param名称='asc '是否正序/param ///param名称='数字'获取的记录数量/param///returns/returns public IQueryableT FindListTKey(表达式func,bool where,表达式func,TKey order,bool asc,int number) { return asc?数据库上下文.SetT().哪里订单方(订单)。取(数): DbContext .SetT().哪里订单方降序(顺序)。取(数);}5、查找实体分页列表方法FindPageList

根据需要FindPageList进行多次重载

///摘要///查找分页列表////summary///param name='页面大小'每页记录数。必须大于1/param ///param name='pageIndex '页码。首页从一开始,页码必须大于1/param///param name=' TotalNumber '总记录数/param///returns/returns public IQueryableT find page list(int page size,int pageIndex,out int total number){ if(page index 1)page index=1;if(页面大小1)页面大小=10;IQueryableT _list=DbContext .SetT();totalNumber=_list .count();返回列表。跳过((页面索引- 1) *页面索引)。take(PageSize);} ///摘要///查找分页列表////summary///param name='页面大小'每页记录数。必须大于1/param ///param name='pageIndex '页码。首页从一开始,页码必须大于1/param///param name=' TotalNumber '总记录数/param ///param名称='订单'排序键/param ///param名称='asc '是否正序/param///returns/returns public IQueryableT findbeglistkey(int page size,int pageIndex,out int totalNumber,ExpressionFuncT,TKey order,bool ASC){ if(page index 1)page index=1;if(页面大小1)页面大小=10;IQueryableT _list=DbContext .SetT();_list=asc?_列表订单方(订单): _list .以.排序降序;totalNumber=_list .count();返回列表。跳过((页面索引- 1) *页面索引)。take(PageSize);} ///摘要///查找分页列表////summary///param name='页面大小'每页记录数。必须大于1/param ///param name='pageIndex '页码。首页从一开始,页码必须大于1/param///param name=' TotalNumber '总记录数/param ///param名称='在哪里'查询表达式/param public IQueryableT查找页面列表(int页面大小、int页面索引、out int totalNumber、ExpressionFuncT、bool其中){ if(页索引1)页索引=1;if(页面大小1)页面大小=10;IQueryableT _list=DbContext .SetT().哪里(哪里);totalNumber=_list .count();返回列表。跳过((页面索引- 1) *页面索引)。take(PageSize);} ///摘要///查找分页列表////summary///param name='页面大小'每页记录数。必须大于1/param ///param name='pageIndex '页码。首页从一开始,页码必须大于1/param///param name=' TotalNumber '总记录数/param ///param名称='在哪里'查询表达式/param ///param名称='订单'排序键/param ///param名称='asc '是否正序/param public IQueryableT findpagelistkey(int page size,int pageIndex,out int totalNumber,expression func,bool where,expression func,TKey order,bool ASC){ if(page index 1)page index=1;if(页面大小1)页面大小=10;IQueryableT _list=DbContext .SetT().哪里(哪里);_list=asc?_列表订单方(订单): _list .以.排序降序;totalNumber=_list .count();返回列表。跳过((页面索引- 1) *页面索引)。take(PageSize);}6、添加实体方法增加

增加方法有一个重载,重载方法可以选择是否立即保存

///摘要///添加实体////summary///param name=' entity '实体/param /返回受影响的对象的数目/返回公共整数加法实体){返回添加(实体,真);} ///摘要///添加实体////summary///param name=' entity '实体/param ///param name='isSave '是否立即保存/param /返回在“isSave”为真实的时返回受影响的对象的数目,为错误的时直接返回0/返回公共整数加法实体,bool isSave) { DbContext .SetT().添加(实体);返回伊萨瓦?数据库上下文.saveChanges(): 0;}7、更新实体方法更新

Updae方法有一个重载,重载方法可以选择是否立即保存

#地区更新///摘要///更新实体【立即保存】////summary///param name=' entity '实体/param /返回在“isSave”为真实的时返回受影响的对象的数目,为错误的时直接返回0/返回公共内部更新实体){返回更新(实体,真);} ///摘要///更新实体////summary///param name=' entity '实体/param ///param name='isSave '是否立即保存/param /返回在“isSave”为真实的时返回受影响的对象的数目,为错误的时直接返回0/返回公共国际更新(T实体,bool isSave) { DbContext .SetT().附加(实体);数据库上下文.EntryT(实体)。状态=实体状态。已修改;返回伊萨瓦?数据库上下文.saveChanges(): 0;}8、删除实体方法删除

删除方法有两个重载,一个是可以选择否立即保存,另一个是批量删除

///摘要///删除实体【立即保存】////summary///param name=' entity '实体/param /返回受影响的对象的数目/返回公共int Delete(T实体){返回删除(实体,真);} ///摘要///删除实体////summary///param name=' entity '实体/param ///param name='isSave '是否立即保存/param /返回在“isSave”为真实的时返回受影响的对象的数目,为错误的时直接返回0/返回公共int Delete(T实体,bool isSave) { DbContext .SetT().移除(实体);返回伊萨瓦?数据库上下文.saveChanges(): 0;} ///摘要///批量删除实体////summary///param name=' entities '实体集合/param /返回受影响的对象的数目/返回public int Delete(IEnumerableT实体){ DbContext .SetT().RemoveRange(实体);返回数据库上下文.saveChanges();}9、统计记录数方法数数

数数方法有一个重载,可以根据表达式进行统计

///摘要///记录数////summary///returns/returns public int Count(){ return DbContext .SetT().count();} ///摘要///记录数////summary////param name='谓词'表达式/param///returns/returns public int Count(expression funct,bool谓词){返回DbContext .SetT().计数(谓词);}10、是否存在

///摘要///记录是否存在////summary////param name='谓词'表达式/param///returns/returns public bool is contains(表达式on count,bool谓词){返回计数(谓词)0;}11、保存到数据库

///摘要///保存数据【在添加、更新、删除未立即保存的情况下使用】////summary ///returns受影响的记录数/返回public int Save(){返回DBContext .saveChanges();}

版权声明:在ASP.NET MVC 5网站开发中实现数据存储层功能(3)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。