gpt4 book ai didi

lazy-loading - 延迟加载的 DAL 和 BLL

转载 作者:行者123 更新时间:2023-12-02 05:13:12 24 4
gpt4 key购买 nike

如何在三层上下文中实现延迟加载?了解表现层、业务层、数据层的基本架构:

您有基本的“哑”类,它们几乎是数据库中表的镜像,只有一个异常(exception)。您没有外键 ID,而是对所引用内容的实际实例的引用。例如:具有 Name/DOB/Title 属性的员工。

然后对于这些类中的每一个,您都有一个类提供对其的 CRUD 操作以及您可能需要的任何自定义数据存储例程(调用与该对象一起工作的存储过程等)。如果您更改数据库,此类将被换出。例如:EmployeeDAL.Save(myEmployee)、EmployeeDAL.Get(myEmployee)(其中 myEmployee 填充了他们的 ID,但没有其他内容)

您有执行验证和不执行验证的业务层类。这些类中的方法通常以调用 DAL 来保存信息或检索信息而结束。当客户对什么构成有效/无效数据改变主意或想要更改某些计算的完成方式时,这种情况就会发生变化。

表示层与业务层交互以显示事物并将在 UI 中进行的插入/更新穿梭到较低层。例如:它遍历员工列表并将它们显示在 HTML 表格中。

但是延迟加载引用的代码究竟应该去哪里呢?如果表示层有一个刚刚显示的 Company 对象,并且正在开始显示 myCompany.Employees 的过程,那是如何实现的呢? myCompany 是镜像数据库表的哑类之一的实例,不应该知道如何检索任何内容。

你会做this的答案吗?问题建议并创建每个对象的虚拟版本?然后 DAL 级别对象可以有变量指示 Employees 是否已加载或尚未加载并调用 DALEmployee.GetEmployees(this)?我觉得我好像遗漏了关于模式的一些重要信息......

最佳答案

如果您使用预构建的框架,例如 nHibernate,这将使这一切变得容易得多,您可以在类/表映射中以及在运行查询时定义延迟加载。尽管 .NET 4 中的 System.Lazy 类可能会有所帮助,但以简洁的方式自己完成它需要相当多的代码。

关于lazy-loading - 延迟加载的 DAL 和 BLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com