.net - true - oledb connectionstring



엔터티 연결 문자열에서 연결 문자열 추출 (4)

ADO.NET Entity Connection String을 생성 할 때 다음과 같은 것을 얻을 수 있습니다.

<add name="MREntities" connectionString="metadata=res://*/App_Code.MembershipAndRoll.MembershipAndRollEntities.csdl|res://*/App_Code.MembershipAndRoll.MembershipAndRollEntities.ssdl|res://*/App_Code.MembershipAndRoll.MembershipAndRollEntities.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=192.168.0.26;User Id=digitaliv;password=*******;Persist Security Info=True;database=digitaliv&quot;" providerName="System.Data.EntityClient" />

내 질문에 어떻게 저장 프로 시저, 사용자 지정 SQL 문 등 호출하려면 수동 SQL 연결 만들기 호출에서 진정한 내부 연결 문자열을 잡아 무엇입니까? 특히이 부분을 추출해야합니다.

server=192.168.0.26;User Id=digitaliv;password=*******;Persist Security Info=True;database=digitaliv

이 시도 :

conn = ConfigurationManager.ConnectionStrings["MREntities"].ConnectionString;

ObjectContext 의 인스턴스가 있다고 가정합니다 (기본 제공 디자이너를 사용하는 경우 컨텍스트는 EF ObjectContext 클래스에서 파생됩니다). ObjectContext.Connection 속성 (DbConnection)의 값을 EntityConnection 캐스팅 할 수 있습니다.

EntityConnection 클래스에는 데이터베이스에 연결하는 데 사용되는 실제 DbConnection StoreConnection 속성이 있습니다. 이 하나 실제로 찾고 ConnectionString 속성이 설정되어 있습니다.

편집 : 일부 샘플 코드 (귀하의 ObjectContext에 컨텍스트 할당) :

ObjectContext context = entities;
EntityConnection entityConnection = context.Connection as EntityConnection;
if (null != entityConnection)
{
    Console.WriteLine(entityConnection.StoreConnection.ConnectionString);
}

Jan Remunda는 컨텍스트를 만들 필요가 없다는 점을 지적하고 EntityClient 연결 문자열을 읽은 직후에 연결을 명시 적으로 만들려는 경우 자신의 솔루션이 유용하지만 사용자가 원하는 경우 내부 공급자 연결 문자열 (OP가 요구하는 것)을 검색합니다.

연결을 열 필요가 없다는 것은 사실입니다. 내부 StoreConnectionConnectionString 을 검색 한 다음 바로 제거 할 수는 있지만 그 이유는 무엇입니까?

대신 적절한 연결 문자열 작성기를 사용하십시오.

new EntityConnectionStringBuilder(outerConnectionString).ProviderConnectionString

EntityConnectionStringBuilder를 참조하십시오.


메타 데이터 정보없이 엔티티 프레임 워크 연결 문자열에서만 추가 연결 문자열에 다음 코드를 사용할 수 있습니다.

string connectionString = new MREntities().Database.Connection.ConnectionString




web-config