2014-05-14 3 views
0

저는 매번 EF와 함께 행운이 없습니다. 이 시간은 다음과 같습니다 : 그것은 속임수를 썼는지 T이 CreateDatabaseIfNotExists에 데이터베이스 초기화를 설정 한 후엔티티 프레임 워크가 테이블을 만들지 않습니다.

Invalid object name 'dbo.TableName1'

:

처음은 내가 같은 오류가 발생한 문맥을 만들었습니다.

다음으로 나는 개발의 어떤 시점에서 변경된 다른 컨텍스트를 만들었습니다. 그래서 이번에 내가이 오류가 계속 :

The model backing the 'NewContext' context has changed since the database was created.

을 나는 이니셜 라이저 null로 데이터베이스를 설정하는 솔루션을 찾았지만이 후 나는 첫 번째 오류가 계속 : 나는 또한 설정하려고

Invalid object name 'dbo.TableName2'

을 나는 (거기에 이미 내가 웹에서 찾은 모든 노력을 생각

Cannot drop database "DatbaseName" because it is currently in use

: DropCreateDatabaseIfModelChanges 및 DropCreateDatabaseAlways, 이러한 설정에 이니셜은 예외를 던져 이런 종류의 많은 주제들) 그러나 아무도 그것으로 나를 도왔습니다.

데이터베이스를 삭제해도 로컬 파일 데이터베이스가 SQL Server 2014 Exspress로 변경되거나 변경되지 않았습니다. 같은 예외가 슬로우됩니다. 어떤 아이디어?

EDIT1 : 작업 컨텍스트 :

public class ProfilesContext : DbContext 
{ 
    public ProfilesContext() : base("DefaultConnection") 
    { 
    } 

    public DbSet<Profile> Profiles { get; set; } 
    public DbSet<PrevilegedContact> PrevilegedContacts { get; set; } 
} 

실패 상황 :

public class PlacesContext : DbContext 
{ 
    public PlacesContext() 
     : base("DefaultConnection") 
    { 

    } 

    public DbSet<Place> Places { get; set; } 

    public DbSet<Price> Prices { get; set; } 
    public DbSet<Photo> Photos { get; set; } 
    public DbSet<Comment> Comments { get; set; } 
} 
+0

DbContext 클래스의 초기화 코드를 표시 할 수 있습니까? – James

+0

요청한 코드로 주제를 편집 함 –

답변

1

당신이 무엇을하고 있는지를 들어, 당신이 당신의 초기화를위한 2 가지 옵션이 있습니다 보인다. Migrations이 있고 DropCreateDatabaseIfModelChanges이 있습니다.

마이그레이션을 수행하면 모델 변경시 데이터베이스 테이블을 업데이트하고 데이터를 보존 할 수 있습니다. 데이터 손실을 허용할지 여부를 구성 할 수 있습니다. 이미 테스트 데이터가있는 경우 개발 시간 동안 매우 유용합니다.

DropCreateDatabaseIfModelChanges는 모델을 변경하고 새 스키마로 다시 만들 때마다 데이터베이스를 삭제합니다. 당신은 가능성이 서버 탐색기에서 테이블을 찾아보다가 데이터베이스에 열려있는 연결을 가지고 있기 때문에

당신은 오류 메시지가

Cannot drop database "DatbaseName" because it is currently in use

을 얻고있다. 서버 탐색기의 마우스 오른쪽 버튼 클릭 컨텍스트 메뉴를 사용하여 연결을 닫을 수 있습니다.

마이그레이션에 대한 비디오 개요가 필요하면 무료 비디오 by Scott Allen & Pluralsight이 있습니다. 이것은 MVC4이지만 Entity Framework 섹션에서는 Initalizers를 다룹니다. 여러 Contexts 등을 포함하도록 MVC5에 대한 업데이트 된 업데이트를 원한다면 존재하지만 Pluralsight 무료 평가판을 사용하여 액세스 할 수 있어야합니다.

0

나는 James에게 동의합니다. 서버 탐색기를 확인하는 것이 중요합니다.데이터베이스를 마우스 오른쪽 단추로 클릭하고 연결 닫기를 선택하거나 적어도 연결이 닫혀 있음을 나타내는 빨간색 X가 있는지 확인하십시오. 아래 링크는 Code First Migrations의 기초에 대한 훌륭한 자습서입니다. 이 링크는 모델 변경과 EF를 다시 행복하게 만드는 방법에 대해 이야기하는 자습서의 페이지에 직접 연결됩니다! http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-new-field. 마이 그 레이션을 선호합니다. 패키지 관리자 콘솔과 1) 마이그레이션 사용, 2) 마이그레이션 추가, 3) 데이터베이스 업데이트를 사용합니다. 가능한 경우 LocalDb를 사용하고 Configuration 클래스의 Seed 메서드를 사용하여 데이터베이스를 미리 채울 수 있습니다.

관련 문제