实体框架数据注释对DDD和关注点分离是否有害?

时间:2012-10-06 21:45:06

标签: c# asp.net-mvc entity-framework entity-framework-4 domain-driven-design

我现在一直在努力学习如何实施DDD,IoC并确保我的应用程序中存在关注点分离。我也试图进入测试第一开发的方式。

不知何故,Entity Framework给med带来了一些麻烦。我有一个域项目来保存我的域对象(现在很多都是POCO类,但有一些行为)。它是遗留代码,我尝试重构它,但MVC在Dataannotations上严重依赖验证。

在域对象上设置datavalidation-attributes,将它们绑定到实体框架。 EF上的大多数教学视频和文档也在域对象上使用了很多属性。

所以我想知道这真的是件好事吗?

我喜欢许多属性的想法,但将它们放在domian对象上的结果让我觉得实体框架是应用程序的核心,而不是域对象。

你有解决这个问题的任何提示,或者这是怎么回事?

更新

以下建议的答案让我在Ladislav Mrnka

回答了这篇文章

对我来说,如果能解决我的问题,这听起来可能是最好的方法。他还指出了我对域层中属性的相同问题。

2 个答案:

答案 0 :(得分:4)

使用Code First Fluent API Validations感觉更好吗?

答案 1 :(得分:2)

某些属性与EF和MVC相关 - 描述您的类的属性。一个必填字段,最小和最大长度等...如果你真的想要分离所有内容,我会将这些属性保存在你的域对象上,把数据库内容(外键等等)放在FluentAPI和MVC中(在视图模型上显示名称等。

如果MVC 4碰巧支持FluentAPI(我使用的是MVC 3,但不知道4,那么你应该使用它。)