Development Tip

EF Code First에서 내 테이블을 어떻게 단일화합니까?

yourdevel 2020. 12. 30. 19:44
반응형

EF Code First에서 내 테이블을 어떻게 단일화합니까?


데이터베이스 테이블 이름을 지정할 때 단수 명사를 사용하는 것을 선호합니다. 그러나 먼저 EF 코드에서 생성 된 테이블은 항상 복수입니다. 내 DbSet은 EF가 이름을 생성하는 곳이라고 생각하는 복수형이지만 코드에서 복수형을 사용하는 것이 더 실용적이라고 생각하므로 이러한 이름을 단 수화하고 싶지 않습니다. 나는 또한 설정을 재정의하려고 시도했지만 소용이 없었습니다.

어떤 아이디어? 여기 내 코드와 감사합니다.

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>();
     }
}

이 목적을 위해 잘못된 규칙 ( PluralizingEntitySetNameConvention )을 제거했습니다 . OnModelCreating 메서드를 아래와 같이 바꾸면 됩니다.

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

Entity Framework 6을 사용하면 DbContext에서 상속하는 파일에서 다음을 수행합니다.

using System.Data.Entity.ModelConfiguration.Conventions;

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

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

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


PluralizingTableNameConvention 정의 위치가 다음으로 이동되었습니다.

using System.Data.Entity.ModelConfiguration.Conventions;

참조 URL : https://stackoverflow.com/questions/4796543/how-do-i-singularize-my-tables-in-ef-code-first

반응형