asp.net-mvc – ASP.NET MVC:BLL和DAL到Repository设计
我们正在从ASP.NET Web Forms迁移到MVC 2.0.在我们的大多数项目中,我们都有一个与数据库通信的典型设置.
常见(像’SiteMenu’和’用户’这样的对象/实体) 业务逻辑层(调用de数据访问层) 数据访问层 DAL有一个具有通用数据库操作的DatabaseHelper,一个具有数据库特定操作的OdbcHelper(例如MySQL)和一个包含所有存储过程的StoredProcedure类. 这个设计如何转化为存储库设计?我们想使用自己的数据库助手而不是NHibernate等. 你会建议什么? 解决方法
您可以使用每种数据访问技术来利用存储库.
存储库是对现有数据访问助手/服务的抽象,允许业务逻辑与数据访问层分离.存储库与Query一起使用以启用过滤.它通常与工作单元一起使用,以将更改存储回数据库. 存储库至少有: > Get-object-by-key操作 一个非常简单的例子:): A.产品类,在Common中定义: public class Product { public int Id { get; private set; } public string Code { get; set; } public string Name { get; set; } public decimal Price { get; set; } } B. Query,IRepository和IUnitOfWork的类在DAL.interfaces.dll或Common.dll中定义(但不在DAL中!). public class Query { public string Text { get; set; } } public interface IRepository<TEntity> where TEntity : class { bool TryGet(int key,out TEntity value); TEntity this[int key] { get; } IEnumerable<TEntity> GetAll(); bool TryGetFirst(Query condition,out TEntity value); TEntity GetFirst(Query condition); IEnumerable<TEntity> GetAll(Query condition); int Count { get; } } public interface IUnitOfWork { void SetAdded(TEntity value); // Marks entity as added for further INSERT void SetRemoved(TEntity value); // Marks entity as removed for further DELETE void SetChanged(TEntity value); // Marks entity as modified for further UPDATE void Save(); // Save all the changes } IUnitOfWork了解已更改的实体. Save()为每个更改的实体调用适当的DatabaseHelper / OdbcHelper CRUD方法,以便在数据库中保留更改. IRepository< Product>,… IRepository< EntityXY>的实现和IUnitOFWork应放在DAL中.然后,BLL使用IRepository和IUnitOFWork来实现业务(域)逻辑. BLL本身可以组织为域模型顶部的服务层,但它超出了讨论的范围:). 我希望我的回答有所帮助. 请随时问我一个问题…… 链接: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 为什么在VS2008 / Casini中开始调试时Applicati
- asp.net-mvc-3 – ASP.NET MVC3的AntiForgeryToken有哪些实
- ASP.NET Webforms验证框架的建议
- asp.net – System.Net.Mail新MailMessage随机发送重复的电
- asp.net – 禁用web.config继承?
- asp.net – WS-Federation真正做了什么(深入并通过一个简单
- 如何让OleDb在asp.net核心项目中阅读excel
- asp.net-mvc – 自动发布使用TFS和MSBuild构建,无需调试文件
- asp.net – 读取文件属性有多贵? .净
- asp.net – visio服务器端自动化的替代方案
- asp.net – 在Web api控制器中手动验证模型
- asp.net-mvc – 您使用ASP.NET MVC的View Engine
- jQuery Ajax方法调用 Asp.Net WebService 的详细
- 将(单片)经典ASP迁移到ASP.Net
- asp.net-mvc – 当内容包含PageControl或TabCont
- asp.net – .Net平台有Django还是Rails?
- asp.net-mvc – 禁用客户端缓存
- 在UNC路径上安装ASP.NET应用程序,您认为这可能吗
- 一个新的ASP.NET MVC 5应用程序如何知道如何创建
- asp.net – 将Dot Net网站调试为域普通用户