簡體   English   中英

將實體框架模型從 Web 項目移動到類庫中

[英]Moving Entity Framework model into class library from web project

我正在使用實體框架,並且最近意識到將 EF 模型放在同一解決方案中的另一個項目中的好處,以便我可以從中構建多個 UI。

我將它移到一個新的類庫項目中,並更新了對 web 項目中實體的所有引用,以使用該項目生成的新 dll。 一切都很順利,除了一個小問題。 當我將 EF 移到新項目時,不知何故它仍在從 web 項目中的 web.config 讀取其連接字符串(不要問我如何,因為我不知道)。

我在 EF 設計器中使用了“從數據庫更新模型”,但它沒有找到連接字符串(正如我在將它移到新項目后所預期的那樣),所以我使用向導生成了一個新的連接字符串,它做得很好. 新的連接字符串現在位於類庫項目中的 App.config 中。 屬性窗口中的連接字符串現在是正確的,設計者正在從 App.Config 中讀取它。 我繼續從 Web 項目中的 Web.Config 中刪除了連接字符串。

現在運行應用程序時出現以下錯誤:

指定的命名連接在配置中找不到,不打算與 EntityClient 提供程序一起使用,或者無效。

如果我將連接字符串粘貼回 Web.Config,一切正常。 我不想從頭開始創建一個新的 EF 模型,因為它是一個相當復雜的模型,而且我在從數據庫中拉入后做了很多重組。 我翻遍了生成的 CS 文件以及 edmx 文件中的 XML,找不到任何有用的東西。 任何幫助深表感謝。 很明顯,在我弄清楚之前,我只是將連接字符串留在 web.config 中,因為無論出於何種原因,這似乎都有效。

這是設計使然; 雖然類庫中的配置文件是設計人員將使用的,但實際應用程序的配置文件將在運行時使用。 無論是 ASP.NET 項目的 Web.config 還是 Winforms 或 WPF 項目的 App.config,都將使用應用程序配置文件(或更高級別的文件,如 Machine.config); 類庫中的文件不是應用程序的一部分。

如果您嘗試提供無需在應用程序或 Web 配置文件中指定連接字符串即可工作的 EF 模型,則您必須以其他方式存儲連接字符串(您始終可以對其進行硬編碼)並將其傳遞給上下文構造函數的適當重載。

我的解決方案通常是在上下文本身上提供一個靜態無參數函數,該函數使用適當的連接字符串調用此重載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM