首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实施DAL和BOL

实施DAL和BOL
EN

Stack Overflow用户
提问于 2012-12-26 08:42:10
回答 1查看 1.3K关注 0票数 0

我正在使用MVC 3,我在使用实体框架时遇到了困难,所以我试图了解实现我自己的DAL的最佳方法是什么。我管理我的系统中的几个主要实体:用户、部门、日历等。我正在尝试理解使用这种分层架构的最佳实践。

  1. DAL应该实现只返回DataTables或DataSets的方法,还是应该熟悉模型\业务对象(用户、部门日历等)?
  2. 它是否应该保存表示不同模型\业务对象的类?
  3. 我应该把不同的存储库类放在哪里?它们也是DAL的一部分吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-26 09:01:47

1) DAL是否应该实现只返回DataTables或DataSets的方法?

绝对不是。DataTables和DataSets是过去的产物。DAL方法应该接受/返回DAL实体。例如,如果您使用的是实体框架,那么这些类将是EF为您创建的自动生成的类。或者,如果您首先使用EF代码,那么这些类就是您为映射到SQL表而编写的类。

2)它是否应该保存表示不同模型\业务对象的类?

如前所述,DAL层应该包含映射到SQL表的实体以及存储库接口的实现。存储库接口使用这些实体定义操作。在DAL层中,您将为实体框架实现此接口(如果这是您打算使用的)。在方法中,您将使用DataContext对实体执行不同的操作。

3)我应该在哪里放置不同的存储库类--它们也是DAL的一部分?

您应该将它们放在与数据访问类相同的程序集中。

然后,ASP.NET MVC应用程序将使用DAL层。您的控制器将简单地将存储库接口作为构造函数参数,并在操作中调用其上的各种方法。然后,您将配置所选择的依赖注入框架,将此存储库接口的特定实现注入到控制器中。这个实现将是实体框架的具体实现。

但是,无论您做什么,不要忘记在ASp.NET MVC应用程序本身中定义视图模型。这些可以放在模型文件夹中。视图模型是要传递给视图的类。典型的控制器操作将使用存储库获取一个或多个域实体,将这些实体映射到为特定视图定义的单个视图模型,最后将视图模型传递给视图。当然,这与此相反:控制器操作将视图模型作为视图的操作参数,将该视图模型映射到一个或多个域实体,并从存储库调用将这些域实体传递给它们的一个或多个方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14038042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档