深入探究 C# 中的数据交互与 .NET 微服务实现
1. 数据层与领域层和其他层的通信方式
在软件架构中,经典层架构通常使用普通对象和存储库与其他层进行通信。Entity Framework Core 配置所定义的实体本身就可以直接用于与其他层通信,因为它们就像普通对象一样,是公共属性的记录列表。
然而,领域层和洋葱架构的情况会稍微复杂一些。在这种架构中,领域层通过富对象与应用层进行通信,这些对象的方法代表了应用领域的规则。一般来说,应用的其他部分不能直接访问领域层对象的所有属性,而必须通过它们自身的方法来修改属性,以强制执行领域规则。
Entity Framework 实体类似于公共属性的记录列表,几乎没有方法;而领域驱动设计(DDD)实体应该有编码领域逻辑、更复杂的验证逻辑和只读属性的方法。虽然可以在不破坏 Entity Framework 操作的情况下添加进一步的验证逻辑和方法,但添加不需要映射到数据库属性的只读属性可能会带来问题,需要妥善处理。防止属性映射到数据库很简单,只需用 NotMapped 属性修饰它们,或者使用流畅的 API,如 .Ignore(e => e.PropertyName) 。
处理只读属性问题有三种基本方法:
- 将 Entity Framework 实体映射到不同的类 :将 DDD 实体定义为不同的类,并在实体返回或传递给存储库方法时在它们之间复制数据。这是最简单的解决方案,但需要编写一些代码来在两种格式之间转换实体。DDD 实体在领域层定义,而 Entity Framework 实体继续在数据层定义。这种方法更
超级会员免费看
订阅专栏 解锁全文
1135

被折叠的 条评论
为什么被折叠?



