Asp.net-Mvc
EntityFramework.SqlServer 未部署在 Web 發布中
注意到發生了這種奇怪的事情,也許這是一個錯誤,但我自己可能會遺漏一些東西。
假設您有一個包含兩個項目的解決方案:一個是 MVC3 項目,另一個是用於數據訪問的類庫(實體框架模型類、數據上下文等)。
類庫引用
EntityFramework(EF6) 和EntityFramework.SqlServer庫。並且 MVC 項目引用了這個類庫
DAL。該DAL庫可能被應用程序之外的一些其他程式碼使用,從而將其與 Web 項目分離。無論如何,似乎在發布 MVC3 項目時,該過程錯過了將
EntityFramework.SqlServer程序集複製到 publish/bin 目錄的過程。但是,它確實EntityFramework與其他庫和類庫本身一起發布了基本dll。有沒有辦法讓發布者也發布所需的 SqlServer 驅動程序?
好吧,所以在一些額外的 Google-fu 之後,似乎一種解決方法是創建一些對缺少的程序集的引用,即使程式碼未使用。
我使用的解決方法是在數據上下文的建構子中添加簡單的測試行:
bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null;
我也有同樣的情況。我通過 NuGet 將 EF 安裝到我的 Web 項目中(我仍然不在那裡使用它,只是引用了庫),它解決了我的問題。
此外,我無法為其他解決方案重現這種情況 - 我創建了新的 Web 項目並引用了新的庫 - 但部署工作正常。