joe*_*dev 8 .net table-per-hierarchy entity-framework-6
从EF6开始,在使用Table Per Hierarchy继承配置实体映射时,可以执行类似的操作:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
BatteryLevel不是Device基类的一部分 - 它是为实现接口契约而实现的派生类的属性.
是否可以将此作为默认行为,而不是必须为每个派生类添加新映射?
joe*_*dev 11
使用自定义代码优先约定(可从EF6开始使用)对此进行排序:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//your code before
modelBuilder.Properties().Configure(prop => prop.HasColumnName(prop.ClrPropertyInfo.Name));
//your code after
}
Run Code Online (Sandbox Code Playgroud)
这会将不同派生类型中具有相同名称的属性映射到同一个表列,而不会显示问题中提到的显式调用.
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |