等待!哪個配置文件?(實體框架連接字元串)
所以,我在一個單獨的類庫中創建了我的實體模型。我必須將連接字元串添加到該
app.config類庫的文件中。然後我在我的 Web 應用程序中為該項目添加了一個 ref。我在我的 Web 應用程序中添加了相同的連接字元串,web.config認為這是 Entity Framework 將從中讀取連接字元串的地方。一切都很好,直到我部署了我的網路應用程序。當我部署時,我更改了
web.config(不是app.config類庫的)中的連接字元串,我開始收到錯誤。在做了一些研究後,我發現兩者中的連接字元串web.config必須app.config匹配!這簡直是愚蠢!每次我需要將我的 web 應用程序部署到不同的環境時,我必須返回並修改
app.config文件中的連接字元串,然後重新編譯我的類庫項目,以便它可以獲得刷新的連接字元串?有沒有人找到更好的方法來做到這一點?我的意思是,我不能是唯一一個想到將實體模型放在單獨的組件中的人。
可能的解決方案(如果您使用的是 EF 4.1): 因為我們需要在類庫項目中包含 app.config 的唯一原因是 EF 設計器。如果我們放棄設計器方法並使用 Code-First (EF 4.1),您將不需要為您的類庫項目創建 app.config 文件。
我們遇到了同樣的情況。我已經要求每個開發人員只在選擇第一個連接字元串的情況下編譯 EF 程序集。
這樣,在部署時,web.config 中只需要一個連接字元串。
最終,如果每台開發機器和部署伺服器在第一個(希望只有)連接字元串(即不是 ConnectionString4)中(對於該機器)都有正確的連接資訊,那么生活就很容易了。
基本上,當預設連接字元串(最新選擇的)無法連接時,設計人員會將額外的連接字元串添加到開發連接字元串中。
此外,沒有理由對將數據層放入單獨的程序集中感到難過。有時這是更可取的。
最後,確保包含連接字元串的配置文件未與原始碼控制掛鉤非常重要——連接字元串通常是本地化的,如果出現這種情況,將導致 EF 和 LINQ to SQL 中的“多連接字元串問題”每次從原始碼管理更新項目時,它都會被錯誤的值覆蓋。