使用MEF与其他项目共享实体框架模型

时间:2011-11-23 14:42:33

标签: vb.net entity-framework mef abstraction composition

我目前正在开发Windows服务,我希望在运行时使用MEF来组合所有服务组件。数据访问模块(项目)使用Entity Framework 4.1和域服务类对实体模型执行CRUD操作。

我遇到的问题是在将DAL编写到主项目中的worker类时,如何在DAL项目之外共享模型。

例如,这是DAL合约接口

中的方法之一
Function GetInspectionFaults() As IQueryable(Of InspectionFault)

此接口当前位于DAL项目中(不是包含其他合同接口的共享/引用项目),因为它需要引用POCO类型的实体模型。

我如何分享这些POCO类型?

菲尔

1 个答案:

答案 0 :(得分:1)

虽然可能需要更多工作,但您可能需要考虑在共享程序集中使用一组单独的模型(如果愿意,还可以查看模型)(可能是常用/合同程序集)。这将使您的部件能够使用一组不明确依赖于DAL的通用类型。

关于关注点的分离,我不建议直接导出你的DAL,而是通过类似Repository模式的东西为它提供一个抽象。存储库将处理与DAL的通信以及从您的域到视图模型的映射。

您可以在任何需要的地方导出和导入存储库,这意味着您的部件不依赖于特定的数据源。这使您的代码更加健壮,更易于测试。