c# - 领域驱动设计和 Entity Framework 4.1(代码优先)

标签 c# entity-framework domain-driven-design

我目前正在学习领域驱动设计方法进行开发,并使用 Tim McCarthy 撰写的 .NET 领域驱动设计与 C# 一书作为指南。

这本书真的很有帮助,但在使用 Entity Framework 时,我变得有点不知所措,尤其是 4.1 中可用的代码优先方法。

根据书中的例子,分层架构方法应该意味着基础设施层看不到模型/领域。

那么,在不违反分层方法的情况下,将我的域 poco 映射到数据库上下文类中的最佳方法是什么(我假设)应该位于基础结构层中?

很有可能我的想法完全错误,所以请让我知道,因为我还在学习!

非常感谢:)

亚当

最佳答案

当今的大多数 ORM,例如 EF 4.1 和 Nhibernate(流畅的 Nhibenrate 插件)都可以通过映射类描述从 POCO 到 Db 上下文的映射。这些映射类最好放在基础设施数据库项目中,也许与 ORM session 特定类一起放置。

那么您的 POCO 领域类应该放在一个领域项目中,该项目不应该有任何对其他组件或项目的引用。但是基础设施数据库项目应该引用域,以便您的映射类可以描述应该如何从持久状态加载 POCO。

使用大量的依赖注入(inject)以及良好而可靠的 IoC 框架(温莎城堡...)。这将帮助您稍微放松一下。最好依赖抽象/接口(interface)而不是实现。

这是基础知识 http://www.infoq.com/articles/ddd-in-practice

但幸好您决定采用 Code First 方法。如果可以的话,我真的推荐这种方法。但有时当旧的遗留系统受到干扰时,事情就没那么容易了。

关于c# - 领域驱动设计和 Entity Framework 4.1(代码优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043374/

相关文章:

c# - 使用 Microsoft Graph API(不是 Azure AD API)查询 Azure Active Directory 中的自定义属性

c# - OpenXML 将文本插入内容控件 Word 2007

c# - Postgresql 和 Entity Framework

c# - 实体数据模型从不同的数据库获取数据

c# - 具有多个允许值类型的数据库字段

design-patterns - 每个实体一项服务?

c# - 为什么 C# 不为集合实现 GetHashCode?

c# - 单元测试

c# - 将多个表映射到 Entity Framework 中的单个实体类

java - DDD和应用层