我应该将Entity Framework包含在我的类库中还是直接包含在应用程序中?

时间:2016-06-17 23:30:06

标签: c# entity-framework entity-framework-6

您之前可能遇到过这类问题但在我的情况下,情况有点不同,我找不到可行的答案。 (它可能已经存在,但是我无法找到它)。

我正在开发一个业务应用程序,它将整个功能拆分为多个类库。我正在使用实体框架,我不确定哪个是包含它的正确位置?就我而言,我有这些库:

  • Project.Library.Core
  • Project.Library.Models(包含实体数据模型和实体)。
  • Project.Library.Auth(包含与身份验证相关的用户管理类)。
  • 以及经常使用实体和数据库上下文的类似类。

为了使这项工作,我将分别在每个库中安装Entity Framework。最终它们将被包含在许多ASP.NET MVC Web应用程序中。我已将Entity Framework直接安装到网络应用程序中,但此应用程序将来会有移动应用程序以及可能的Windows应用程序。在这种情况下,我可以简单地设置ASP.NET Web API并使用现有的类库来生成所需的数据。这是阻止我将实体框架直接纳入网络应用程序的唯一因素。

那你对此有什么看法?在每个库中单独包含实体框架(需要正常运行),或者只是包含在Web应用程序中,然后对Web API采用相同的方法?

谢谢。

1 个答案:

答案 0 :(得分:2)

你只需要安装" EntityFramework集成到一个地方: Project.Library.Models 。假设标准的代码优先对象作为您的DTO,只要您使用数据访问层包装上下文对象,您就不需要在其他任何地方直接引用。

添加对该程序集的引用将导致必需的DLL包含在您的应用程序,网站等中。请注意,如果您使用的是EntityFramework.SqlServer,则Visual Studio将无法检测到瞬态依赖性。你需要做类似的事情:

class Include
{
    private Include() { }
    private SqlProviderServices IncludeSql;
}

在模型项目中的某处,以便也复制DLL。