2011-01-25 18 views
51

Veritabanı tablolarıma isim verirken tekil isimler kullanmayı tercih ediyorum. Ancak EF kodunda ilk olarak, oluşturulan tablolar her zaman çoğul halindedir. DbSets'im çoğuldur, ki bu EF'nin isimleri oluşturduğuna inanıyorum ama bu isimleri tekilleştirmek istemiyorum, çünkü çoğulları kod içinde çoğaltmanın daha pratik olduğunu düşünüyorum. Ayrıca ayarı geçersiz kılmayı denedim ama boşuna.EF Code First'teki tablolarımı nasıl tekilleştirebilirim?

Herhangi bir fikrin var mı? İşte kodum ve teşekkürler.

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

cevap

83

Bu amaçla yanlış kuralı (PluralizingEntitySetNameConvention) kaldırdık. Aşağıdaki ile OnModelCreating yöntemini değiştirin ve gitmek için iyi olacaksınız.

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

, dosyanızda DBContext devralan:

using System.Data.Entity.ModelConfiguration.Conventions; 

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

Ad CTP5'ten EF 4.1'e değiştirildi. Bu şimdi DbModelBuilder olarak adlandırılıyor. – campo

1

PluralizingTableNameConvention tanımının yer taşındı için:

using System.Data.Entity.ModelConfiguration.Conventions;

2

Özellik değerini de değiştirebilirsiniz:

Araçlar menüsünde Seçenekler'i tıklatın. Seçenekler iletişim kutusunda, Veritabanı Araçları'nı genişletin. O/R Tasarımcısı'nı tıklatın. İsimlerin Etkinleştirilmesi Enabled = Enable = False, O/R Designer'ı sınıf isimlerini değiştirmeyecek şekilde ayarlamak için. İsimlerin çoğullaştırılmasını Etkin olarak ayarla = Çoğullama kurallarını O/R Tasarımcısı'na eklenen nesnelerin sınıf adlarına uygulamak için true.