我們處於一個混合的環境中,我們的應用程序使用ADO.NET和實體框架。
由於兩者都指向相同的物理SQL服務器,我們希望從配置文件中刪除實體框架連接字符串,然後根據當前的ADO.NET連接字符串自動生成字符串。
這節省了我們的開發人員更改ADO.NET字符串但忘記更改實體框架連接字符串的錯誤。實體框架6設置連接字符串運行時間
我已經讀過這個,但他們沒有回答這個問題。
How do I create connection string programmatically to MS SQL in Entity Framework 6?
如果我創造我自己的DbConnection並傳遞到的DbContext(existingConnection,contextOwnsConnection),那麼它拋出一個錯誤「的情況下被以代碼優先模式下的代碼是從一個EDMX文件生成的使用,也可以數據庫優先或模型優先開發「。
我沒有使用Code First。
https://msdn.microsoft.com/en-us/data/jj680699
這談起代碼庫配置EF 6,但文章並不表明實際上改變了連接字符串的任何代碼。
更新:更多信息,以幫助澄清我的問題。
我沒有先使用代碼,並想在配置文件之外建立連接字符串。
我正在使用的DbContext是T4模板生成的自動生成的DbContext文件的部分類。
我的印象是,我需要創建一個繼承的DbConfiguration類,並在該類中執行某些操作,但我發現的唯一示例是使用Azure。
https://msdn.microsoft.com/en-us/data/jj680699
有一篇關於Code Project的文章,講述了在運行時設置連接字符串,但文章基於每次創建新實體容器時都創建連接字符串。
http://www.codeproject.com/Tips/234677/Set-the-connection-string-for-Entity-Framework-at
我想能夠使用我的部分DbContext類創建連接字符串,以便調用者不必做任何特殊的事情。
更新:工作代碼用於運行時間而不是設計時
使用張貼@Circular參考「下面列出的」代碼,我能更改連接字符串,而不改變我的實體類的電話,但這個不起作用用於DesignTime EDMX文件。
public partial class TestEntities : DbContext
{
public TestEntities() : base(GetSqlConnection(), true)
{
}
public static DbConnection GetSqlConnection()
{
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
var connectionSettings = ConfigurationManager.ConnectionStrings("Current_ADO_Connection_In_Config");
// Set the provider name.
entityBuilder.Provider = connectionSettings.ProviderName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = connectionSettings.ConnectionString;
// Set the Metadata location.
entityBuilder.Metadata = "res://*/Models.TestModel.csdl|res://*/Models.TestModel.ssdl|res://*/Models.TestModel.msl";
return new EntityConnection(entityBuilder.ToString());
}
}
現在,如果我可以只是得到DesignTime的工作,那很好。
我想你會使用的ObjectContext inste DbContext的廣告,因爲您沒有使用Code First。我不是100%確定這種關係。這提示:https://msdn.microsoft.com/en-us/library/bb738461(v=vs.110).aspx並從此處鏈接描述創建連接:https://msdn.microsoft.com /en-us/library/bb738533%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – AaronLS 2015-04-03 22:26:36
CodeFirst的連接字符串通常是標準連接字符串,其中非CodeFirst的連接字符串通常是對csdl/ssdl/msl文件。 – AaronLS 2015-04-03 22:27:55