1

我用的是ADO.NET,我已经创建了DAL和BAL,结构如下

DAL
   -POCO(Table to Entities mapping)
   -Repository (Add, Delete, Edit, Select, Search)

BAL
   -POCO(DAL to Entities mapping where Entities are complex type here)
   -BusinessManager(Validation and Business rules)

我将使用服务公开 BAL。Web、Window、Mobile 等多个应用程序将使用此 BAL。

我不确定 Sql Transactions 应该从哪里开始。谁负责创建复杂的实体。

例如,复杂实体可能是

   Entity
     -Entity Type
     -Contacts
     -EmployeesReporting
     -ReportingTo

现在谁应该创建一个实体?它是 BAL 还是 DAL。SqlTransactions 应该从哪里开始?我应该如何使这些实体支持延迟加载,因为我是存储过程的支持者,并且更喜欢每个请求使用一个数据库连接

4

1 回答 1

0

我不确定我是否看到您希望每个请求使用一个数据库连接是否符合您支持延迟加载的愿望。

延迟加载的要点是,在最初加载对象图时,您不需要具体化对象图的某些部分,并且您可能需要也可能不需要在程序执行的某个稍后时间点加载这些部分。

以某种方式保留连接以满足该需求将非常浪费宝贵的资源(数据库连接)。

由于在业务访问层中使用了对象图,因此最初未具体化的对象图部分必须以某种方式表示,以允许您拦截请求以使其可用,并按需生成它们。在业务层中放置代理的 EF 解决方案反过来激活 DAL 以按需获取对象图的缺失部分,这是一个很好的解决方案。

于 2012-06-10T15:59:35.290 回答