3层架构中的循环引用问题C#

atu*_*tul 7 c# asp.net 3-tier circular-reference n-tier-architecture

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

我有3层:

  1. 包含UI的应用层.
  2. 包含所有逻辑和域类的业务层.
  3. 包含所有数据库交互方法的数据层.

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

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

那我怎么能避免这个问题呢?请建议.

Jon*_*eet 8

是否可以从业务逻辑中拆分域对象以进行操作?因此,您拥有描述数据的类,包含相对原始的操作,然后您的业务层数据采取更多操作- 通常在一个操作中使用多个不同的类.

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

  UI              /
  Business logic  | Domain classes
  Data layer      \
Run Code Online (Sandbox Code Playgroud)

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

我已经很好地看到了这项工作 - 它确实意味着你的域类通常会变得有点"愚蠢",尽管它们仍然可以包含围绕某些验证的相关逻辑,以及与其他类无关的方面.

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