ADO.Net Entity Framework : (四) 從SQL連線字串建立EntityConnection物件

ADO.Net Entity Framework : (四) 從SQL連線字串建立EntityConnection

在使用 Entity Framework 時,我們會發現Entity Framework 吃的連線字串跟我們平常寫得不太一樣,EntityConnectionString 像下面這樣

<configuration>
  <connectionStrings>
    <add name="TestEntities" connectionString="metadata=res://*/Demo.DA.TestModel.csdl|res://*/Demo.DA.TestModel.ssdl|res://*/Demo.DA.TestModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SQLEXPRESS;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=True&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

但如果專案裡,同時有用到原本的 SqlConnectionString 也有用到 Entity Framework 時,
又不想在config檔裡面同時存在兩組ConnectionString,
提供一個方法,可以用原本的ConnectionString,動態建立EntityConnection物件,如下

/// <summary>
/// 取得 EntityConnection
/// </summary>
/// <param name="connectionString">連線字串</param>
/// <returns>EntityConnection</returns>
public static EntityConnection GetEntityConnection(string connectionString)
{
    EntityConnectionStringBuilder ecsb = new EntityConnectionStringBuilder();
    ecsb.Metadata = string.Format(@"res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", "Demo.DA.TestModel");
    ecsb.Provider = "System.Data.SqlClient"; ////不可省略            
    ecsb.ProviderConnectionString = connectionString;            
    EntityConnection ec = new EntityConnection(ecsb.ToString());

    return ec;
}

注意上面的範例要將”Demo.DA.TestModel”替換成使用時的名稱
這樣就不用存在兩組相同的連線字串囉

  

參考資料

EntityConnection 類別

HOW TO:建立 EntityConnection 連接字串 (Entity Framework)

HOW TO:定義連接字串 (Entity Framework)




 


 

  • 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的""給予支持,非常感激
  • 歡迎轉載,但請註明出處
  • 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝