asp.net-mvc – 如何构建通用存储库
发布时间:2020-12-16 07:34:50 所属栏目:asp.Net 来源:网络整理
导读:我正在使用NHibernate在ASP.NET MVC中开发一个Web应用程序. 根据我在Google上发现的文章和教程,我正在为我的课程使用Repository. 我有10个类和10个存储库.今天我发现除了班级以外,90%的矿藏都是完全相同的.这是一个例子: public class PromocaoRepository:
我正在使用NHibernate在ASP.NET MVC中开发一个Web应用程序.
根据我在Google上发现的文章和教程,我正在为我的课程使用Repository. 我有10个类和10个存储库.今天我发现除了班级以外,90%的矿藏都是完全相同的.这是一个例子: public class PromocaoRepository:IPromocaoRepository { private ISession Session; public PromocaoRepository() { this.Session = NHibernateSessionFactory.OpenSession(); } public void Add(Promocao promocao) { using(ITransaction transaction = this.Session.BeginTransaction()) { this.Session.Save(promocao); transaction.Commit(); } } public void Edit(Promocao promocao) { using(ITransaction transaction = this.Session.BeginTransaction()) { this.Session.Update(promocao); transaction.Commit(); } } public void Remove(Promocao promocao) { using(ITransaction transaction = this.Session.BeginTransaction()) { this.Session.Delete(promocao); transaction.Commit(); } } public Promocao GetById(int id) { return this.Session.Get<Promocao>(id); } } 有一种方法可以做我可以在我所有课程中使用的通用存储库吗? 如果可能的话,如果我需要为特定类创建特定方法,我该怎么办? 解决方法
您应该创建一个通用存储库,您可以在一般情况下使用它,如果特定类需要任何额外的方法,请使用继承添加它.使用你的例子:
public class GenericRepository<TEntity> :IGenericRepository<TEntity> { private ISession Session; public GenericRepository() { this.Session = NHibernateSessionFactory.OpenSession(); } public void Add(TEntity instance) { using(ITransaction transaction = this.Session.BeginTransaction()) { this.Session.Save(instance); transaction.Commit(); } } /* other methods */ } public class SpecificRepository : GenericRepository<SpecificEntity>,ISpecificRepository { public void SpecialQuery() { /* added method implementation */ } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 没有透明度的div中的div的不透明度
- asp.net-mvc – 我应该如何管理ASP.NET MVC 4应用程序中的成
- asp.net-mvc – 我可以在asp.net mvc中拥有多个site.master
- 在何处以及如何“缓存”ASP.NET角色数据
- asp.net-mvc-3 – 为什么@ Html.Label()删除一些字符
- asp.net-mvc – ASP.NET MVC3 IIS7.5:Cache-Control maxag
- 从ASP.NET到HTML5的图表生成器框架
- asp.net – 将上一个错误传递给自定义错误重定向的最佳方法
- asp.net – 无法在Web服务器上启动调试.无法连接到网络服务
- 如何在ASP.NET中获取原始请求体?
推荐文章
站长推荐
- asp.net-mvc-2 – <::<%:和<%=与嵌套代码(表
- asp.net – Application_End应该在自动App Pool
- asp.net – 实体框架“等待操作超时”就简单的De
- asp.net-mvc – 将脚本放在MVC _layout页面中的位
- asp.net-mvc-4 – 如何永久教Visual Studio检测我
- 基于Asp.net C#实现HTML转图片(网页快照)
- 集成ASP.NET Webforms,WebAPI和AngularJS
- ASP.NET Page_Init被解雇了两次!
- .net – MVC 5中的“CacheProfile”
- asp.net-mvc – 文件输入MVC 3所需的客户端验证
热点阅读