c# - 三层架构 C# 中的循环引用问题

标签 c# asp.net n-tier-architecture circular-reference 3-tier

我想在 ASP.NET 中构建一个具有 3 层架构的 Web 应用程序。但是我遇到了循环引用的问题。

我有 3 层:

  1. Application layer containing UI.
  2. Business layer containing all the logic and domain classes.
  3. Data layer containing all database interaction methods.

我在业务层使用数据层方法来执行数据库操作,在这些方法中我需要将域类对象传递给数据层,但由于循环引用而无法完成。

例如,我有一个包含一些属性和方法的Person 域类。现在我想将该 Person 插入到数据库中。我在 Person 类中有一个方法,名为 InsertPerson()。在这个方法体中,我必须调用数据层的函数来插入数据库。但是我无法将整个人对象传递到数据层方法中,因为数据层引用已添加到业务层,反之亦然。

那么如何避免这个问题呢?请提出建议。

最佳答案

是否可以将域对象从业务逻辑中分离出来以对其进行操作?因此,您有描述数据的类,其中包含相对原始的操作,然后您的业务层是数据上的更多操作 - 通常在一个操作中使用多个不同的类。 p>

然后你最终有四个程序集:

  UI              /
  Business logic  | Domain classes
  Data layer      \

因此所有三个层都有效地使用域类作为通用术语。

我已经看到这项工作非常好 - 它确实意味着您的领域类通常会变得有点“愚蠢”,尽管它们仍然可以包含围绕一些验证等方面的相关逻辑,这些方面独立于其他类。

当然,还有很多替代方法:)

关于c# - 三层架构 C# 中的循环引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757033/

相关文章:

asp.net - 使用 ASP.NET 关闭 Windows 声音

C++ 和多层架构

c# - 如何以编程方式展平 SVG 文件中的变换?

asp.net - 如何执行 SQL 语句?

c# - 如何在 Xamarin 表单中使用 MVVM 仅为 Collection View 中的选定框架设置颜色?

javascript - 拖动图像以调整位置,就像在 Facebook 缩略图个人资料图片中一样

java - 如何在 3 层架构中组织依赖关系

winforms - Windows 窗体应用程序的物理中间层分离

c# - 使用 Reg-Free-COM 时,事件未发送到基于 WPF 的 ActiveX 控件(COM 互操作)

c# - 中止 .NET 线程