如何设计 DAL/BAL 以支持使用 POCO 的延迟加载,而无需使用实体框架

本文关键字:延迟加载 框架 实体 POCO DAL BAL 支持 | 更新日期: 2023-09-27 18:36:39

我正在使用 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 事务。谁负责创建复杂实体。

例如,复杂实体可以是

   Entity
     -Entity Type
     -Contacts
     -EmployeesReporting
     -ReportingTo

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

如何设计 DAL/BAL 以支持使用 POCO 的延迟加载,而无需使用实体框架

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

延迟加载的要点是,在最初加载对象图时,您不需要

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

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

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