【发布时间】:2010-12-21 08:09:52
【问题描述】:
我的数据库中的一些表是使用 EAV 概念设计的。 然后我使用由 ORM 实体框架自动生成并表示“静态”表(不是“EAV”表)的实体作为 DDD 对象。
- 如何使用 Entity Framework 在对象模型中使用我的“EAV”实体(而不是在数据库中的关系)?
例如,
在数据库中,我有静态表 Report 和 EAV 表,它们可以帮助我存储 ReportProperty for Report。
在域模型中,我想要这样的报告:
Report
{
ICollection<ReportProperty> ReportProperties{get;set;}
}
我可以使用由实体框架和部分部分生成的报告实体 在 getter 中实现一些逻辑,用于从我的 EAV 表中检索数据以填充 Collection ReportProperies。然后它引出了下一个问题。
- 如果我决定使用 NHibernate 而不是 Entity Framework,我该怎么办,因为我无法使用我已经使用 Entity Framework 实现的部分部分?
如果我将使用 DDD 对象,我可以将其用于 Entity Framework 或 NHibernate,这对我来说几乎是不可能的,因为我需要在我的 DAO 中的每个过程中调用映射过程。
【问题讨论】:
-
Konst,你能解释一下“EAV”代表什么吗?此外,如果您将问题的格式设置得更好一些,它可能会帮助您获得回复。
-
eav 是 ddd 的对立面,ddd 是“使隐式显式”并且在 eav 中没有什么是显式的恕我直言
-
正如@remibourgarel 所说,EAV 不适合 DDD,EAV 是关于解决关系数据库问题以表示对象,而 DDD 即将拥有不具有持久性的代码。
标签: entity-framework-4 domain-driven-design entity-attribute-value