ASP.NET+MVC+EF6.0项目部署时BUG实录

        所维护的随访系统,基于ASP.NET+MVC+EF6.0,每每从数据库更新完实体后,运行时报“错误 0152: 未找到具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序

的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882。"

        1)看了下WEB项目的配置文件确实不包括名为“entityFramework”的配置节信息。查看了项目,BLL层有对EF的引用,查看其配置文件,名为“entityFramework”的配置节

信息,将其信息拷贝到WEB项目的配置文件后,如下:

  
    
    

       2)添加完之后运行程序,报以下出错提示: “无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类

型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。有关详细信息,请参阅

 http://go.microsoft.com/fwlink/?LinkId=260882。“

        看描述,为Web项目添加EntityFramework.dll和EntityFramework.SqlServer.dll的引用,尝试了下,果然OK。

        至此,问题得到解决。

        事后,与同事交流,他说这是EF部署的一个BUG,某个DLL拷贝不到WEB项目的bin文件夹下,可以在EF的上下文代码CS文件(Model1.Context.cs)的构造函数方法中添

加如下代码即可: 

var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;

     试了下,果然可以部署正常,又学了一招哦!!!

你可能感兴趣的:(asp.net)