本文转载:http://www.cnblogs.com/dudu/archive/2011/01/29/entity_framework_connection_string.html
如果EF在使用实体模型时候,即model first 和db first 时候,则
Entity Framework使用的连接字符串与ADO.NET是不同的,见下图:
相比于ADO.NET,Entity Framework的连接字符串不仅要存放metadata配置信息,还要存放完整的数据库连接字符串(上图中的"provider connection string"部分)。
这样的设计有两个不足之处:
1. 连接字符串配置复杂;
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";
metadata:指明.csdl/.ssdl/.msl三个文件的路径,要与你的edmx文件名称一致。
web.config文件如下:
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;"/>