2013-03-29 2 views
6

그래서 저는 Entity Framework (주 프로젝트의 경우 v5)를 사용하고 있습니다. 내가 항상 가지고있는 한 가지 질문이지만 확실한 답을 찾지 못할 수도 있습니다 - EF가 올바르게 작동하려면 연결 문자열의 이름이 내 DbContext의 이름과 일치해야합니까?연결 문자열 이름 및 엔터티 프레임 워크

이렇게 (나 다르게 다르게 해본 적이 없지만) EF가 작동하려면 내 Web.config에서 "마법 문자열"을 제공하지 않아도됩니다. 내 의견으로는 DefaultConnection을 이름으로 유지하고 EF가 다른 방식으로 연결하는 것이 더 좋을 것입니다.

<entityFramework> 
    <contexts> 
     <context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral"> 
     <databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

는 어떤 통찰력을 주시면 감사하겠습니다 ...

<connectionStrings> 
    <add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

... 그리고 ... 멀리 아래로 : 여기

제의 Web.config에서 참조 (일부 이름 변경)입니다 .

+0

, 당신의'DbContext' 클래스와 같은 이름의 연결 문자열을 사용 할 수 있습니다. – jrummell

답변

11

질문 하나 난 항상 있었다, 그러나 최종 대답을 찾을 수 없었다 - 내 연결 문자열의 이름은 EF가 제대로 작동하기 위해서는 내 DbContext의 이름과 일치해야 않습니다를? 당신은 DbContext의 기본 생성자에 연결 문자열 이름을 전달할 수 있습니다

번호, 즉

public class MyDbContext : DbContext 
{ 
    public MyDbContext() 
     : base("MyConnectionStringName") 
    { 

    } 
} 

당신이 연결을 직접 작성하는 것을 선호하는 경우 DbConnection 인수를 취하는 DbContext에 생성자도 있습니다.

마지막으로 IDbConnectionFactory의 구현을 제공하고 LocalDbConnectionFactory 대신 app.config으로 지정된 기본값 대신 사용할 수 있습니다. 당신은 설정에서 변경 또는 다음과 같이 런타임에 설정할 :

기본 협약

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();

관련 문제