[英]How to set a EF code first connection string at runtime
我想念一些東西。 我有一個小項目,試圖在數據庫中插入一些數據。 創建模型時,我對現有數據庫使用了代碼優先。 我想使該應用程序能夠在運行時指向任何服務器。 這是一個骯臟的實用工具應用程序,內部運行,但是運行時我需要一定的靈活性。 通過閱讀一些msdn文章,我看到了可以在初始化時擴展DBContext的地方,因此我執行了以下操作:
在初始化中添加了一個參數:
public OtherEventModel(string ConnectionString)
: base("name=OtherEventModel")
{...
然后在我的代碼中,根據從UI傳入的屬性構建連接字符串:
private OtherEventModel ConnectToServer(string server, string username, string password)
{
try
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = server,
UserID = username,
Password = password,
InitialCatalog = "My_Database",
IntegratedSecurity = true
};
var connection = sqlBuilder.ToString();
ModelContext = new OtherEventModel(connection);
return ModelContext;
}
catch (Exception ex)
{
throw new Exception(string.Format("Error connecting to server {0}", ex.Message));
}
我可以看到創建的連接字符串,但是當我運行代碼時,我收到一個異常,即連接字符串(在app.config中找不到應有的內容)。 由於我試圖在運行時注入連接字符串,因此我在應用程序配置中沒有連接字符串或鍵。
錯誤:
Error inserting data No connection string named 'OtherEventModel' could be found in the application config file
從我的閱讀中得到的印象是,代碼首先使用標准的SQL連接字符串,並且不需要EntityConnectionStringBuild(用於對象優先開發)
有人可以針對我錯過的內容或我做錯的事情向我指出正確的方向。
提前致謝
您快到了,只需將連接字符串傳遞給基本對象:
public OtherEventModel(string ConnectionString)
: base(ConnectionString)
確保在下面的方法中注釋投擲線。 不幸的是,每次更新模型時,您都必須再次執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.