如何在不使用Entity框架的情况下设计DAL / BAL以支持使用POCO进行延迟加载

时间:2012-06-10 15:51:53

标签: c# architecture data-access-layer business-logic-layer

我正在使用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在哪里开始。谁负责创建复杂的实体。

e.g。复杂的实体可能是

   Entity
     -Entity Type
     -Contacts
     -EmployeesReporting
     -ReportingTo

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

1 个答案:

答案 0 :(得分:0)

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

延迟加载的一点是,在最初加载对象图时,您不需要实现对象图的某些部分,而可能会或可能不会需要在稍后加载这些部分在程序执行中。

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

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