我正在使用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.

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

===============>>#1 票数:0

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

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

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

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

===============>>#2 票数:0

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

  ask by user3555471 translate from so

未解决问题?本站智能推荐: