2012-11-21 2 views

답변

3

OnModelCreating은 항상 한 번만 호출됩니다. 모델을 다시 작성해야하는 경우 수동으로 DbModelBuilder을 작성해야합니다.

var builder = new DbModelBuilder(DbModelBuilderVersion.Latest); 
// setup whole model 
DbModel model = builder.Build(connection); 
DbCompiledModel compiledModel = model.Compile(); 
// cache compiledModel for future usage - compilation is very expensive 

var context = new DbContext(compiledModel); 

이 문제를 방지해야합니다. Identity 삽입은 EF와 잘 작동하지 않으므로 SQL로 직접 데이터를 삽입해야하므로 맵핑을 변경할 필요가 없습니다.

+0

안녕하세요 Ladislav입니다. ID 삽입 기능이 EF와 잘 작동하지 않는 이유는 무엇입니까? 나는 내 질문에 게시 된 방법을 사용하여 몇 가지 테스트를 수행했으며 지금까지 문제를 발견하지 못했습니다. 정보가 있다면, 나는 그것을 듣고 매우 감사 할 것입니다. 나는 또한 SQL 서버 쿼리를 사용하려고 생각하고 있었지만 쿼리를 사용할 때 엔티티 속성 이름 중 하나를 변경하면이 가져 오기가 실패하고 DbContext를 사용할 필요가 없기 때문에 SQL Server 쿼리를 사용하지 않으려 고합니다. 이 문제에주의를 기울이십시오. – Goran

+0

이 작업을 수행 할 수 없습니다. mehtod를 빌드 할 때 SqlConnection 연결 개체를 전달하고 있습니다. 이 시점에서 connection.Open() 문제없이 작동합니다. 모델을 컴파일하고 DbContext에 전달하면 Sql 서버 로그에서 오류가 발생합니다. 'Server-PC \ TestUser'사용자 로그인에 실패했습니다. 이유 : 명시 적으로 지정된 데이터베이스 'TestProject.Data.MyDbContext'를 열지 못했습니다. 오류 : 18456, 심각도 : 14, 상태 : 38. [CLIENT : <로컬 컴퓨터>]. – Goran

+0

내가 이것을 잊어 버린 이유 :이 경우 ModelBuilder가 연결 객체의 정확한 데이터베이스 이름이 아닌 컨텍스트 이름을 사용하여 데이터베이스에 연결하려고하는 이유는 무엇입니까? "데이터 소스 =. \\ SQLEXPRESS; 초기 카탈로그 = TestDatabase; 통합 보안 = True; MultipleActiveResultSets = True" – Goran

관련 문제