首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework6& TPH继承:默认情况下,将同名属性映射到同一列

EntityFramework6& TPH继承:默认情况下,将同名属性映射到同一列
EN

Stack Overflow用户
提问于 2013-10-24 21:56:30
回答 1查看 1.9K关注 0票数 10

在EF6中,当使用表按层次结构继承配置实体映射时,可以这样做:

代码语言:javascript
复制
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不是Device基类的一部分--它是为实现接口契约而实现的派生类的属性。

是否有可能使这成为默认行为,而不是为每个派生类添加一个新的映射?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-18 18:16:29

使用了Custom Code First Conventions (从EF6开始就可以使用)来解决这个问题:

代码语言:javascript
复制
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //your code before
        modelBuilder.Properties().Configure(prop => prop.HasColumnName(prop.ClrPropertyInfo.Name));
        //your code after
    }

这将不同派生类型中同名的属性映射到相同的表列,而不像问题中提到的那样显式调用。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19577453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档