entity-framework-4 – 实体框架4和ddd中的EAV
发布时间:2020-12-14 04:47:13 所属栏目:百科 来源:网络整理
导读:我的数据库中的一些表是使用EAV概念设计的. 然后我使用自动生成的实体,并将ORM实体框架的“静态”表(不是“EAV”表)表示为DDD对象. 如何使用Entity Framework在对象模型中使用我的“EAV”实体(不像在数据库中那样关联)? 例如, 在数据库中我有静态表Report和
我的数据库中的一些表是使用EAV概念设计的.
然后我使用自动生成的实体,并将ORM实体框架的“静态”表(不是“EAV”表)表示为DDD对象. >如何使用Entity Framework在对象模型中使用我的“EAV”实体(不像在数据库中那样关联)? 例如, Report { ICollection<ReportProperty> ReportProperties{get;set;} } 我可以使用由Entity Framework生成的Report实体和部分部分 >如果我决定使用NHibernate而不是Entity Framework,我该怎么办,因为我不能使用我已经实现使用Entity Framework的部分部分? 如果我将使用DDD对象,我可以用于Entity Framework或NHibernate,对我来说很难,因为我需要在我的DAO中的每个过程中调用映射程序. 解决方法
EAV是数据访问层的概念,而DDD是业务逻辑层的概念.像Entity Framework或NHibernate这样的ORM诱惑我们将这两个层混合在一起,但在具有复杂逻辑的复杂项目中(这是需要DDD的地方),这绝不会发生.所以划分你的Dal和Bll.为您的DDD对象使用手工制作的类,并为Entity Framework使用自动生成(或代码优先)类,并在它们之间提供映射层.然后EAV将只是你的Dal的实现细节.如果切换到NHibernate,你的Bll和DDD类也不必改变.只是你的映射层会.顺便说一句,使用依赖倒置.让你的Dal依靠你Bll而不是相反.如果您将映射层与Entity Framework部件物理分离,则在汇编级别使用mediator模式(意味着您的映射层依赖于您的Bll和Dal,而不是任何其他方式).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |