atu*_*tul 7 c# asp.net 3-tier circular-reference n-tier-architecture
我想在ASP.NET中构建一个具有3层架构的Web应用程序.但是我遇到了循环引用的问题.
我有3层:
- 包含UI的应用层.
- 包含所有逻辑和域类的业务层.
- 包含所有数据库交互方法的数据层.
我在业务层中使用数据层方法来执行数据库操作,在这些方法中,我需要将域类对象传递给数据层,但由于循环引用而无法完成.
例如,我有一个Person包含一些属性和方法的域类.现在我想将其Person插入数据库.我在Person类中有一个方法,命名为InsertPerson().在这个方法体中,我必须调用Data层的函数插入到数据库中.但是我无法将整个人对象传递到数据层方法,因为数据层引用被添加到业务层,反之亦然.
那我怎么能避免这个问题呢?请建议.
是否可以从业务逻辑中拆分域对象以进行操作?因此,您拥有描述数据的类,包含相对原始的操作,然后您的业务层对数据采取更多操作- 通常在一个操作中使用多个不同的类.
然后你最终有四个程序集:
UI /
Business logic | Domain classes
Data layer \
Run Code Online (Sandbox Code Playgroud)
因此,所有三个层都有效地使用域类作为通用术语.
我已经很好地看到了这项工作 - 它确实意味着你的域类通常会变得有点"愚蠢",尽管它们仍然可以包含围绕某些验证的相关逻辑,以及与其他类无关的方面.
当然,有很多替代方法:)