기존 데이터베이스에 새 테이블을 만드는 코드를 처음으로 마이그레이션하는 방법을 사용하고 있으며 프로젝트의 어딘가에서 속성 대 필드 매핑을 자동 생성하는지 알고 싶습니다.EF/코드 첫 번째 마이그레이션 - 암시 적 테이블 매핑?
예 : 데이터베이스에 이미 존재하는 "범주"테이블. 그것은 SQL에서 직접 만들어 내 MCV 프로젝트는 명시 적으로 분류 테이블 필드에 범주 개체 속성을 매핑 CategoryMap.cs 파일이되었습니다
CategoryMap.cs
this.ToTable("Category", "ctt");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.ClientId).HasColumnName("ClientId");
this.Property(t => t.CategoryTypeId).HasColumnName("CategoryTypeId");
etc.
DB를 컨텍스트 클래스를 명시 적으로 OnModelCreating 방법이 매핑을 가리키는 : 나는 자리에 매핑 조각을 지킬 세트 업으로
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CategoryMap());
etc.
, 나는 한 범주 테이블에 데이터를 저장할 수 있습니다. 내 상황에 맞는 클래스에이 코드를 추가
1) "을 MyTable"엔티티 클래스
2 작성) : 한편
, 나는 코드 첫 번째 방법을 사용하여 새 테이블을 만든public DbSet<MyTable> MyTable { get; set; }
3) 추가 마이그레이션 및 업데이트 데이터베이스를 실행하여 데이터베이스 스키마에 "을 MyTable"테이블을 생성
명령, 나는이 테이블, desp에 데이터를 저장할 수 있습니다 실제로 매핑 파일이없고 사실 db 문맥 클래스의 OnModelCreating 메서드에 명시적인 매핑 코드가 없다는 사실이 있습니다.이제 "modelBuilder.Configurations.Add (새 CategoryMap());"을 주석 처리하면됩니다. 컨텍스트 클래스의 코드 줄을 더 이상 해당 테이블에 데이터를 저장할 수 없습니다; db.SaveChanges() 할 때 "테이블 '범주'찾을 수 없습니다"오류 메시지가 나타납니다.
제 질문은 이것입니다. 추가 - 마이그레이션 및 업데이트 데이터베이스 명령을 사용하여 "MyTable"을 만들었을 때 클래스 대 테이블 맵이 자동으로 어딘가에서 생성 되었습니까? 그렇다면 액세스하여 볼 수 있습니까?
'발견되지 않음'오류에 관해서는; 이는 마이그레이션 데이터와 데이터베이스가 동기화되지 않았기 때문일 수 있습니다. 예 : 누군가 SQL에서 직접 Category 테이블을 만들었지 만 마이그레이션에 대해 알지 못합니다.또는 반대로 마이그레이션에 그러한 테이블이 있다고 생각되지만 누군가 테이블을 수동으로 변경하거나 삭제했습니다. 마지막으로 스키마를 기억하십시오. EF에서 기본 스키마를 지정하고 매핑 또는 데이터베이스가 Category 테이블에 대해 다른 스키마를 반영하면이 오류가 발생합니다. – Suamere