本文轉載:http://www.cnblogs.com/dudu/archive/2011/01/29/entity_framework_connection_string.htmlhtml
若是EF在使用實體模型時候,即model first 和db first 時候,則web
Entity Framework使用的鏈接字符串與ADO.NET是不一樣的,見下圖:數據庫
相比於ADO.NET,Entity Framework的鏈接字符串不只要存放metadata配置信息,還要存放完整的數據庫鏈接字符串(上圖中的"provider connection string"部分)。ide
這樣的設計有兩個不足之處:ui
1. 鏈接字符串配置複雜;spa
2. 沒法重用現有的ADO.NET數據庫鏈接字符串。設計
我在技術推廣中這麼寫的: public class DALBase { public NWEntities NWContext { get; set; } public DALBase() { string providerString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; string conn = GetEntityConnString(providerString); NWContext = new NWEntities(conn); } private string GetEntityConnString(string providerString) { EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); //Metadata屬性的值,是從嚮導生成的Config粘貼過來的 entityBuilder.Metadata = "res://*/NW.csdl|res://*/NW.ssdl|res://*/NW.msl"; entityBuilder.ProviderConnectionString = providerString; entityBuilder.Provider = "System.Data.SqlClient"; return entityBuilder.ToString(); } }
注意上面中的 entityBuilder.Metadata = "res://*/NW.csdl|res://*/NW.ssdl|res://*/NW.msl";code
metadata:指明.csdl/.ssdl/.msl三個文件的路徑,要與你的edmx文件名稱一致。htm
web.config文件以下:blog
Entity FreamWork配置文件方式
<add name="LGSCMSEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;"" providerName="System.Data.EntityClient" />
ADO.NET方式配置文件 <add name="LGSCMSEntities" connectionString="Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;"/>