2013-10-24 13 views
7

Ab EF6 ist es möglich, so etwas zu tun, wenn Entitätszuordnungen Konfiguration Vererbung Tabelle pro Hierarchie:Entity Framework 6 & TPH Vererbung: Karte Eigenschaften mit dem gleichen Namen auf dieselbe Spalte standardmäßig

public class MyContext : DbContext 
{ 
    public DbSet<Device> Devices { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<ABatteryPoweredDevice>().Property(c => c.BatteryLevel).HasColumnName("BatteryLevel"); 
     modelBuilder.Entity<ADifferentBatteryPoweredDevice>().Property(c => c.BatteryLevel).HasColumnName("BatteryLevel"); 
    } 
} 

BatteryLevel ist nicht Teil der Basisklasse Device - es ist eine Eigenschaft der abgeleiteten Klassen, die implementiert wurden, um einen Schnittstellenvertrag zu erfüllen.

Ist es möglich, dies zum Standardverhalten zu machen, anstatt für jede abgeleitete Klasse eine neue Zuordnung hinzufügen zu müssen?

Antwort

9

Gebrauchte Custom Code First Conventions, die ab EF6 verfügbar sind, diese zu sortieren:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     //your code before 
     modelBuilder.Properties().Configure(prop => prop.HasColumnName(prop.ClrPropertyInfo.Name)); 
     //your code after 
    } 

Diese Karten Eigenschaften mit dem gleichen Namen in verschiedenen abgeleiteten Typen auf den gleichen Tabellenspalte ohne explizite Anrufe wie diejenigen, die in der genannten Frage.

Verwandte Themen