2012-08-07 8 views
15

개체 컨텍스트 데이터 모델 (EDMX 파일 사용)을 만드는 경우 구성 파일에서 연결 문자열을 지정할 수 있습니다.Entity Framework에서 공급자 연결 문자열

연결 문자열은 불행히도 공통 연결 문자열이 아니며 엔티티 연결에 필요한 몇 가지 사항을 포함하고 있습니다. MySQL의 연결 예 :

<add name="MyDbEntities" connectionString="metadata=res://*/Namespace.MyDb.csdl|res://*/Namespace.MyDb.ssdl|res://*/Namespace.MyDb.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=172.17.17.154;User Id=user;password=password;Persist Security Info=True;database=MyDatabase;Convert Zero Datetime=true&quot;" providerName="System.Data.EntityClient" /> 

내가 가진 문제는이 연결 문자열 매개 변수 "공급자 연결 문자열"의 공급자의 연결 문자열을 포함합니다.

특정 이유로 인해 엔티티 모델과 관련이없는 새로운 MySqlConnection을 만들어야합니다. MySqlConnection을 생성하려면 mysql 연결 문자열을 제공해야합니다.이 연결 문자열은 엔터티 모델에 대한 공급자 연결 문자열이며 필요한 연결 문자열은 엔터티 모델에 대해 항상 동일한 연결 문자열입니다.

그러나 공급자 연결 문자열을 programmaticaly로 가져 오는 방법은 무엇입니까?

ModelInstance.Connection.ConnectionString 

은 "이름 = TestBotEntities", 심지어 전체 연결 문자열 같은 것을 포함 나는

다음 ... 아니 성공 모델 인스턴스를 검색 붙어 있었다. 그래서 시도 :

ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString 

하지만, 하나는 전체 개체 연결 문자열을 포함하고 난 그냥 구문 분석, 어떻게에서만 공급자 연결 문자열을 얻을하는 방법을 모르겠어요.

답변

33

두 가지 방법이 있습니다.

나는 EntityConnectionStringBuilder를 통해 엔티티 연결 문자열을 구문 분석 할 수 있습니다 :

string entityConnectionString = ConfigurationManager.ConnectionStrings["MyDbEntities"].ConnectionString; 
string providerConnectionString = new EntityConnectionStringBuilder(entityConnectionString).ProviderConnectionString; 

... 아니면 내가 사용할 수있는 특정 모델 인스턴스가있는 경우, 여기에서 얻을 수 있습니다.

((System.Data.EntityClient.EntityConnection)ModelInstance.Connection).StoreConnection.ConnectionString; 
관련 문제