2011-01-17 14 views
39

Ben CodeFirstEF4'te tablo | sütun adı için farklı bir ad belirtin

public class People : DbContext 
{ 
    public DbSet<Human> Humans { get; set; } 
    public DbSet<Child> Children { get; set; } 
} 

ile EF4 kullanıyorum Şu anda, EF Human tablo için veritabanında görünüyor. Bunun yerine Humans'ü aramak için nasıl belirleyebilirim?

cevap

60

Sen Human sınıfına tablo adını değiştirebilirsiniz: Eğer sütunun adını değiştirmek için ColumnAttribute veya HasColumnName yöntemi kullanabilirsiniz

modelBuilder.Entity<Human>() 
    .ToTable("Humans"); 

Similary:

[Table("Humans")] 
public class Human 
{ 
    ... 
} 

Diğer bir yol Akıcı API kullanmaktır.

+0

Çok faydalı! Bunları, her geçiş oluşturma işleminde manuel olarak düzeltiyordum. –

+1

Sadece Model Oluşturmanın sadece verilen DbContext türetilmiş sınıfın ilk örneği için gerçekleştirildiğini belirtmek isterim. Sonra gelecekteki örnekler için önbelleğe alınır. Dolayısıyla 'MyDbContext.OnModelCreating()' (Akıcı içerik yapılandırması genellikle gerçekleşir) uygulamanızda yalnızca bir kez çağrılır. - Bu, her DbContext örneği için gerçekten dinamik Tablo adı olmasını engeller. - Bunu yazıyorum çünkü zor yoldan öğrendim. Birileri için bazı baş ağrısını kurtarabilir :) – Riva

İlgili konular