繁体   English   中英

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

[英]Do I need to add reference to EntityFramework.SqlServer in presentation Layer?

我正在使用3层, Web, BLL and DAL编写MVC Web应用程序。 我根据自己的需要选择了MVC 5 Code第一种方法。 我的上下文和模型类驻留在DAL中。 我正在我的BLL中实现存储库模式,该模式从DAL获取数据,将数据加载到ViewModel并提供来自Web层的请求。

WEB - >参考BLL

BLL - >引用DAL(BLL上安装的实体框架)

DAL - >(在DAL上安装的实体框架)。

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

现在,问题是,当我运行应用程序时,我不断收到以下错误。 除非我在Web层上安装实体框架,否则它不会消失,我对此犹豫不决。 我不喜欢将实体框架添加到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.

如果我可以这样做而不必在我的网络层安装实体框架,请告诉我。 任何输入都非常感谢。

我理解它的方式是,当你使用MVC时,每一层都将独立于另一层(意味着某些依赖性,例如迎合特定数据库引擎,不应冒泡到视图层,根据你的困境) )。

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

我认为它的方式不应该是DAL内部使用面向数据库的数据结构的问题,但是,它应该通过使用传统的数据结构(如Lists和Sets)与系统的其他部分进行交互。

这同样适用于中间层。 如果这样做,您应该能够保持数据层中包含的实体框架参考要求。 一切都将是自成一体的(参考明智)。

您应该在组合根目录中包含所有引用。 在您的应用程序组合中,root是web层,因此您应该将此引用添加到项目中。 但是你不应该在web层中使用它的类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM