c# - 我是否需要在表示层中添加对 EntityFramework.SqlServer 的引用?

标签 c# ef-code-first asp.net-mvc-5

我正在使用 3 层编写一个 MVC 网络应用程序,Web、BLL 和 DAL。我选择了 MVC 5 Code first 方法来满足我的需要。我的上下文和模型类驻留在 DAL 中。我正在我的 BLL 中实现存储库模式,该模式从 DAL 获取数据,将数据加载到 ViewModels 并为来自 Web 层的请求提供服务。

WEB --> 引用了 BLL

BLL --> 引用了 DAL(安装在 BLL 上的 Entity Framework )

DAL -->(安装在 DAL 上的 Entity Framework )。

我在 DAL 和 BLL 上都安装了 Entity Framework ,因为我在这两个层中都使用了 DBSet 或 IDBSet。

现在,问题是,当我运行该应用程序时,我不断收到以下错误。除非我在 Web 层上安装 Entity Framework ,否则它不会消失,我对此犹豫不决。除非绝对必要,否则我不喜欢将 Entity Framework 添加到 Web 层。但是杀死它的 dllEntityFramework.SqlServer。

错误:

No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

请告诉我是否可以在不在我的 web 层上安装 Entity Framework 的情况下执行此操作。非常感谢任何输入。

最佳答案

我的理解是,当您使用 MVC 时,每一层都将独立于另一层(这意味着某些依赖项,例如为特定的数据库引擎提供服务,不应冒泡到 View 层,因为根据你的困境)。

如果我没有正确理解您的问题,那么您是在说您的中间层中也有与数据库相关的数据集。我认为这不是要走的路,因为您限制您的中间层使用与数据库相关的数据结构。

在我看来,DAL 应该不是问题然而,要在内部使用面向数据库的数据结构,它应该通过使用列表和集合等传统数据结构与系统的其他部分进行交互。

这同样适用于中间层。如果这样做,您应该能够将 Entity Framework 引用要求包含在您的数据层中。一切都将是独立的(引用明智的)。

关于c# - 我是否需要在表示层中添加对 EntityFramework.SqlServer 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23191019/

相关文章:

c# - 在游戏中使用正确的多线程

c# - 在与统计/模拟软件交互时,C# 和 Java 中哪一个更容易、更快速?

entity-framework - Entity Framework 代码优先和原始类型集合

entity-framework - 具有标识列的 SQL Server Compact 4.0 表中的插入性能呈指数级下降

c# - 可以将参数的格式说明符作为另一个参数传递给 String.Format 吗?

c# - 如何在获得焦点时选择文本框中的所有文本

entity-framework - 仅返回子实体 Linq Entity Framework

asp.net-mvc-5 - MVC 5 - 选择项目时在同一页面中显示项目详细信息

c# - 在局部 View MVC5 之间传递 View 模型

asp.net-mvc-5 - ASP.NET MVC 5 Identity 2 PasswordSignInAsync 方法总是返回 false