EF6:必须包含在启动项目中

本文关键字:启动 项目 包含 EF6 | 更新日期: 2023-09-27 18:24:01

我有三个项目:持久性、逻辑和测试。

Persistence项目有EF特有的东西。Logic项目使用Repository模式与Persistence/EF进行交互。Test项目是一个通用控制台,它调用一个Logic对象并检查我的EF设置是否正确。正常的东西。

为了运行它,我显然需要在测试项目上安装EF(并且我需要将我的App.Config从EF类库项目移动/复制到测试项目)。

这很好,它很有效,但当我进入其他组件/应用程序层项目时,我不想为这些从未直接处理EF的"入口点"包含完整的EF参考。

如何将EF具体包含在自己的项目中?感谢

编辑可能的重复:可能的重复处理如何将业务逻辑与DAL解耦。我的问题是为什么演示项目需要参考实体框架:我已经隔离了BAL/DAL,并建立了存储库模式。

EF6:必须包含在启动项目中

理想情况下,您应该将Entity框架框架工作的依赖性限制在尽可能少的数量。最好的方法是只在有数据访问代码的层/项目中使用EF(您的数据访问层)。如果您将DTO'/POCO(不是EF创建的实体)返回给调用这些数据访问方法的人(通常来自您的业务层),效果会更好。你可以把这个DTO放在一个单独的项目中(我们称之为YourProject.Common)。使用这种方法,您可以随时将DAL层切换为使用另一种数据访问方法(NHibernate、Pure ADO.NET等)。如果您使用实体框架,您仍然需要在启动项目中保留连接字符串(对于EF,以及所有这些元数据:())。

所以你的图层/项目将类似于

  • 通用(将具有所有DTO/POCO)
  • DataAccess(将具有数据访问代码,这是指YourProject.Common Project并返回该项目的DTO你不需要在这个项目中保留连接字符串,你的应用程序就可以运行,因为它总是从有连接字符串的启动项目中调用的。但是,请保持App.Config(由EF生成)原样,因为当您稍后更新EDMX文件以进行数据库更改时,需要这样做。

  • 业务(BL层,该项目将有2个项目参考,通用项目和数据访问项目)

  • Web/Win表单(这是您的前端/启动项目。这不会直接与数据访问对话,这将有2个项目参考、公共和数据访问)。这将包含您的连接字符串