【发布时间】:2013-08-31 15:59:45
【问题描述】:
在我们的应用程序中,我们将现有 DAL 从 EF 4.0 升级到 EF 5.0。
目前已经实现了通用存储库模式,我们正在使用 POCO 对象作为业务实体。
这些对象使用 WCF 属性进行修饰,因为它们在 Web 服务接口中传递并使用部分类进行扩展,以便添加更多业务和验证方法。此外,每个 POCO 实体都继承自基类“BusinessEntity”和接口“IBusinessEntity”,以便轻松使用泛型存储库方法。
我们计划将业务实体与 POCO 对象分离,以使后者成为只有属性而没有逻辑的普通类。
但是在阅读了该主题之后,目前的技术状态似乎是采用 Code First 方法并直接保留域实体(即使当然不可能对所有情况进行概括)。
Related answer 1, related answer 2.
在我们的例子中,保留带有业务逻辑的 POCO 对象并仅应用与 EF 5.0 (DbContext) 相关的更改是否有意义?或者我们应该在存储库中引入一个映射层?通过这种方式,应用程序将在业务实体上运行,并且存储库层将从外部隐藏 POCO 对象。然而,缺点是引入了复杂性,特别是在处理通用存储库时。
提前致谢。
【问题讨论】:
-
前段时间我也遇到过类似的问题,或许有些答案对你有用:stackoverflow.com/questions/11521192/…
-
感谢 GrandMasterFlush 的帖子。但是,我可以问您使用哪种方法从 POCO 映射业务对象? (如果你最终决定做这个决定)。
-
我使用了由 WCF 服务调用的控制器类,它读取 EF 模型并将数据传递到标有 WCF 属性的 POCO 中。由于它不是一个很大的网站,这似乎是有道理的。
-
我不确定这种方法是否适合我们的场景。我们有两个大系统:前端(具有提供程序和业务层的 MVC 4 应用程序)通过 WCF 连接到后端(实现业务层、DAL 和服务层的代码库)。在前端已经有来自 BE 的 POCO 之间的映射,我们暂时不会更改它。我们将专注于 BE 对象,因此直接与 EF 合作。
标签: entity-framework mapping poco