2012-04-22 4 views
2

나는 새로운 DB를 생성하도록되어 코드 첫 DbContext을 가지고 있지만 몇 번을 시도해 후 DB가 존재하지 않습니다, 나는 시퀀스를 얻고 아래 코드의 ctx.Statuses.ToList()에는 요소 오류가없는 :내 코드 첫 번째 데이터베이스는 어디에 있습니까?

static void Main(string[] args) 
{ 
    var ctx = new EtbDbContext(); 
    EtbDbContext.Init(); 

    var s = ctx.Statuses.ToList(); 
    var l = ctx.Logins.ToList(); 
    var u = ctx.Users.ToList(); 
} 

Init() 방법은 말한다 : 나는 오류가 발생하고 직접 실행 창에서 내 연결 문자열을 검사 할 때

public static void Init() 
{ 
    Database.SetInitializer(new DropCreateDatabaseAlways<EtbDbContext>()); 
} 

, 그 구성 및 예상대로 :

?

ctx.Database.Connection {System.Data.SqlClient.SqlConnection} .. 은 ConnectionTimeout : 15 데이터베이스 : "EtbCodeFirst" 데이터 소스 : "BRADY-PC" 의 Serverversion : 'ctx.Database.Connection.ServerVersion' 'System.InvalidOperationException' 주 유형의 예외를 던졌다 :

이러한 DB 데이터 소스 BRADY-PC에 존재하지 않는 휴일을, 그래서 심지어 DB를 조회하기 전에 연결 오류가 발생한다. 나는 혼란스럽고 오히려 오만한 사람입니다. 오늘 DB 첫 개발로 돌아 오기 전에 누군가가 도움이되기를 바랍니다.

나는 또한 내 (localdb)와 아직 DB를 확인하지 않았습니다. 저주받은 DB를 만드는 악의적 인 EF 코드는 어디에도 없습니다. 그것은 매우 첫 번째 라인 및 테스트되도록 위쪽으로 귀하의`Main` 방법에`;

+0

당신이'EtbDbContext.Init을 (이동할 수 ... 당신의 컨텍스트를 여는 다시? 그것은 중요하지만 이니셜 라이저를 설정하기 전에 컨텍스트 인스턴스를 만드는 것이 이상하게 보입니다. – Slauma

+0

@Slauma 좋은 지적. 나는이 문제를 전에 아무런 문제없이 사용했지만 어쩌면 나는 결코 눈치 채지 못했을 것이다. 최대한 빨리 귀하의 제안을 시도하겠습니다. – ProfK

+0

@Slauma가 알아 차 렸듯이 분명히 잘못된 순서로 (최선의 경우는 아무 것도해서는 안됨). 또한 app.config - 연결 문자열 (이름 지정) 및 'defaultConnectionFactory'(있는 경우) 및 어떤 공급자 (잘못된 버전을 피하기 위해)를 대상으로 설정합니까? 또한 새로운 EtbDbContext (connectionstring)을 실행 해 볼 수도 있습니다 - 일반적으로 작동하고 올바르게 작동하도록 도와줍니다. – NSGaga

답변

0

전화 .Init 전)

static void Main(string[] args) 
{ 
    EtbDbContext.Init(); 
    using (var ctx = new EtbDbContext()) 
    { 
     var s = ctx.Statuses.ToList(); 
     var l = ctx.Logins.ToList(); 
     var u = ctx.Users.ToList(); 
    } 
} 
관련 문제