EntityFramework.SqlServer未部署在Web发布中

时间:2013-12-10 15:58:53

标签: asp.net-mvc asp.net-mvc-3 entity-framework visual-studio-2012 ef-code-first

注意到这个奇怪的事情,也许这是一个错误,但我可能会遗漏一些东西。

假设您有一个包含两个项目的解决方案:一个是MVC3项目,另一个是数据访问的类库(实体框架模型类,数据上下文等)。

类库引用EntityFramework(EF6)和EntityFramework.SqlServer库。

MVC项目引用了这个类库DALDAL库可能会被应用程序之外的其他代码使用,因此可以将其与Web项目分离。

无论如何,似乎在发布MVC3项目时,进程错过了将EntityFramework.SqlServer程序集复制到publish / bin目录。但是,它 发布基础EntityFramework dll以及其他库和类库本身。

有没有办法让发布者也发布所需的SqlServer驱动程序?

3 个答案:

答案 0 :(得分:16)

好吧,所以在一些额外的Google-fu之后,似乎解决方法是创建一些对缺少的程序集的引用,即使代码未使用。

.NET MVC 3 Deployment package missing references

我使用的解决方法是在数据上下文的构造函数中添加简单的测试行:

bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null;

答案 1 :(得分:4)

我有同样的情况。我通过NuGet将EF安装到我的web项目中(我仍然没有在那里使用它,只是引用了库)并且它解决了我的问题。

此外,我无法为其他解决方案重现这种情况 - 我创建了新的Web项目并引用了新的lib - 但部署工作正常。

答案 2 :(得分:1)

在项目的包文件中添加实体框架包