2011-01-25 3 views
51

데이터베이스 테이블의 이름을 지정할 때 단수 명사를 사용하는 것을 선호합니다. 그러나 EF 코드에서 먼저 생성 된 테이블은 항상 복수형입니다. 내 DbSets는 복수화되어 있습니다. EF가 이름을 생성하는 곳이지만 EF가 이름을 생성하는 곳은 여러 곳이지만 코드에서 복수형을 사용하는 것이 더 소박하다고 생각하므로이 이름을 특이하게하고 싶지 않습니다. 나는 또한 설정을 무시하려했지만 아무 소용이 없었습니다.EF Code First에서 테이블을 어떻게 구체화합니까?

아이디어가 있으십니까? 여기 내 코드와 감사합니다.

MyObjectContext.cs

public class MyObjectContext : DbContext, IDbContext 
{ 
    public MyObjectContext(string connString) : base(connString) 
    { 
    } 
    public DbSet<Product> Products {get;set;} 
    public DbSet<Category> Categories {get;set;} 
    //etc. 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>(); 
    } 
} 

답변

83

이 목적을 위해 잘못된 규칙 (PluralizingEntitySetNameConvention)을 제거했습니다. OnModelCreating 방법을 아래 내용으로 바꾸십시오. 그러면 도움이 될 것입니다.

엔티티 프레임 워크 6
using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db; 
... 
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{  
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 

, 파일에 DbContext에서 상속 :

using System.Data.Entity.ModelConfiguration.Conventions; 

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
} 
+15

이름이 CTP5에서 EF 4.1로 변경되었습니다. 이제 DbModelBuilder라고합니다. – campo

1

PluralizingTableNameConvention의 정의의 위치가 이동에 :

using System.Data.Entity.ModelConfiguration.Conventions;

2

속성 값을 변경할 수도 있습니다.

도구 메뉴에서 옵션을 클릭하십시오. 옵션 대화 상자에서 데이터베이스 도구를 확장하십시오. O/R 디자이너를 클릭하십시오. 클래스 이름을 변경하지 않도록 O/R 디자이너를 설정하려면 이름을 복수로 설정 = 거짓으로 지정하십시오. 이름 복수화를 사용 가능으로 설정하면 O/R 디자이너에 추가 된 개체의 클래스 이름에 복수 화 규칙을 적용합니다.

관련 문제