在Entity Framework中重用現有的數據庫鏈接字符串

本文轉載: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=&quot;Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;&quot;" providerName="System.Data.EntityClient" />

ADO.NET方式配置文件 <add name="LGSCMSEntities" connectionString="Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;"/>
相關文章
相關標籤/搜索