2012-08-26 2 views
22

Entity Framework 5를 사용하려고합니다. 첫 번째 문제는 EF가 테이블을 자동으로 생성한다는 것입니다. 나는 dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>()을 포함시켜 그것을 고치려고했다. 두 번째 문제는 다음과 같은 오류입니다.Entity Framework 5의 복수 화 테이블 생성을 해제하는 방법은 무엇입니까?

데이터베이스가 생성 된 이후 'CountryContext'컨텍스트를 지원하는 모델이 변경되었습니다. 코드 첫 마이그레이션을 사용하여 데이터베이스를 업데이트하는 것이 좋습니다.

나는 그것을 dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>();로 수정하려고했지만 의미는 없습니다. 데이터 액세스 레이어 다음을 :

Table(Name = "tblCountries")] 
public class Country 
{ 
    [Column(Name = "id", IsDbGenerated = true, IsPrimaryKey = true)] 
    public int Id {get;set;} 

    [Column(Name = "name")] 
    public string Name {get;set;} 
} 

public class CountryContext:DbContext 
{ 
    public CountryContext(string connStr):base(connStr) 
    { 
    } 

    public DbSet<Country> TblCountries { get; set; } 

    protected override void OnModelCreating(DbModelBuilder dbModelBuilder) 
    { 
     dbModelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     dbModelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
    } 
} 

    public class CountryDal:BaseDal 
{ 
    public int CheckIsExist(Country country) 
    { 
     int id = 0; 
     using (var context = new CountryContext(ConnectionString)) 
     { 
      var first = context.TblCountries.FirstOrDefault(el => el.Name == country.Name); 
      if (first != null) 
      { 
       id = first.Id; 
      } 
     } 
     return id; 
    } 
    } 

추가 정보 : VS 2012 프레임 워크 4.5, 엔티티 프레임 워크 5.0.0.0 그리고 EF 4가 (OnModelCreating 방법없이) 완벽하게 작동합니다.

+0

전체 추측 여기에 있지만 EF는 여전히 ENT를 인식 않습니다 'ID'와 같이 모든 식별자를 사용하는 것에 반대하는 ID로 암시 할 때 ID : –

답변

42

당신은 OnModelCreating 방법이 코드를 작성할 수 있습니다

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
5

당신은 당신이 모델과 데이터베이스가 당신의 응용 프로그램의 시작에서 이것을 사용 사이 EF 일관성 테이블을 생성하고 관리하지 않으려면 :

Database.SetInitializer<CountryContext>(null); 
+0

이것은 문제를 해결하지만 질문은 아닙니다 - 그러나 질문자는 잘못된 질문을하고 있습니다.) –

4
EF 6.0에서 LINQ를 사용

:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    var conventions = new List<PluralizingTableNameConvention>().ToArray(); 
    modelBuilder.Conventions.Remove(conventions); 
} 
+1

이상한 - 대상 유형의 빈 배열? –