在Entity Framework中重用現有的數據庫連接字符串
Entity Framework使用的連接字符串與ADO.NET是不同的,見下圖:

相比于ADO.NET,Entity Framework的連接字符串不僅要存放metadata配置信息,還要存放完整的數據庫連接字符串(上圖中的"provider connection string"部分)。
這樣的設計有兩個不足之處:
1. 連接字符串配置復雜;
2. 無法重用現有的ADO.NET數據庫連接字符串。
我覺得更合理的設計應該是將數據庫連接字符串獨立出來,并提供一個"provider connection string name"設置,在這個設置中可以指定“數據庫連接字符串”的名稱,效果見下圖:

這樣既簡單,又能重用,多好!
YY之后,還是要回到現實,Entity Framework就是這個鳥樣,現有的數據庫連接字符串我就是想重用,那怎么辦呢?
自己創建EntityConnection,并將之傳遞給ObjectContext的構造函數,代碼如下:
public CNBlogsObjectContext()
: base(BuildConnection("CNBlogsDB"), "club_CNBlogsContainer")
{
}
static EntityConnection BuildConnection(string connectionStringName)
{
string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
MetadataWorkspace workspace = new MetadataWorkspace(new string[] { "res://*/" },
new Assembly[] { Assembly.GetExecutingAssembly() });
SqlConnection sqlConnection = new SqlConnection(connectionString);
return new EntityConnection(workspace, sqlConnection);
}
浙公網安備 33010602011771號