我目前正在开发Windows服务,我希望在运行时使用MEF来组合所有服务组件。数据访问模块(项目)使用Entity Framework 4.1和域服务类对实体模型执行CRUD操作。
我遇到的问题是在将DAL编写到主项目中的worker类时,如何在DAL项目之外共享模型。
例如,这是DAL合约接口
中的方法之一Function GetInspectionFaults() As IQueryable(Of InspectionFault)
此接口当前位于DAL项目中(不是包含其他合同接口的共享/引用项目),因为它需要引用POCO类型的实体模型。
我如何分享这些POCO类型?
菲尔
答案 0 :(得分:1)
虽然可能需要更多工作,但您可能需要考虑在共享程序集中使用一组单独的模型(如果愿意,还可以查看模型)(可能是常用/合同程序集)。这将使您的部件能够使用一组不明确依赖于DAL的通用类型。
关于关注点的分离,我不建议直接导出你的DAL,而是通过类似Repository模式的东西为它提供一个抽象。存储库将处理与DAL的通信以及从您的域到视图模型的映射。
您可以在任何需要的地方导出和导入存储库,这意味着您的部件不依赖于特定的数据源。这使您的代码更加健壮,更易于测试。