目前我们在应用程序中使用 Sql Server 和 Entity 框架。我们有自己的基于 Sql Server 的自定义成员资格提供程序。我们使用 EF 作为 ORM。
我们正在更新我们的应用程序以处理 MongoDb。我们开始对 Membership Provider 进行更改。
截至目前,我们的 BL 直接创建实体模型的实例并进行数据库操作。我认为这不是一个好的设计。
我希望我的 BL 不应该根据数据库而改变。它应该创建存储库对象的实例并转发请求(CRUD 操作)。存储库将负责与 DAL 的通信。如果我错了,请纠正我。
我正在考虑创建一个接口(interface),该接口(interface)将由存储库和从 BL 使用的存储库实现。界面将如下所示。
interface IDataRepository
{
MembershipUser CreateUser(string firstName, stringLastName, string email, string phone);
}
1).请告诉我更好的方法。
2).如果我的应用程序有不同的存储库,BL 应该如何决定它应该使用哪个存储库。为此使用工厂模式会是个好主意吗?
谢谢, 纳什
最佳答案
我认为你在正确的轨道上将你的应用程序分解成层,然后你的存储库或 DAL 层可以是你所需要的(SQL、Web 服务等),然后使用工厂或 DI 来获取数据你需要它。
这是关于这样做的数据库帖子
- http://bobthejanitor.org/2009/07/n-tier-design-revisit-part-1-over-view.html
- http://bobthejanitor.org/2009/07/n-tier-design-revisit-part-2-data.html
- http://bobthejanitor.org/2009/07/n-tier-design-revisit-part-3-data.html
- http://bobthejanitor.org/2009/07/n-tier-design-revisit-part-4-biz-layer.html
- http://bobthejanitor.org/2009/08/n-tier-design-revisit-part-5-ui-layer.html
- http://bobthejanitor.org/2009/10/not-ready-for-inversion-of-control-just.html
关于c# - 我应该如何设计我的业务层来根据配置设置处理 Sql Server 和 Mongo DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502863/