CodeFirst EF 4.1继承-重命名PK / FK

问题描述

|| 我有两个类,ThreadItem和Enquiry。
public class ThreadItem
{
    [Key]
    public int Id { get; set; }

    public DateTime Created { get; set; }
} 

public class ThreadItemMapping : EntityTypeConfiguration<ThreadItem>
{
    public ThreadItemMapping()
    {
        Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName(\"ThreadItemId\");
    }
}

[Table(\"Enquiry\")]
public class Enquiry : ThreadItem
{
    public string Comment { get; set;}
}
现在,这行之有效,不是一个单一的问题。我有一个[ThreadItem]表和一个[查询]表。我的查询表有一个PK / FK,它映射到ThreadItem,这是我所需要的。但是,我想重命名该列。 根据ThreadItemMapping类,当前为[ThreadItemId]。我想将其重命名为[EnquiryId]。我知道被称为[ThreadItemId]是有道理的,说实话,这更多是一个“是否可能”的问题。 有任何想法吗? 干杯, d     

解决方法

        http://msdn.microsoft.com/zh-cn/library/gg197525%28v=vs.103%29.aspx 我并不是说这无法完成,但是这些示例并未显示正在执行此操作。 但是,如果使用Fluent-API约定,则非常简单。 您的POCO定义:
public class BaseClass
{
    public int Id {get; set;}
}

public class DerivedClass : BaseClass
{
    public string Data {get; set;}
}
配置到数据库的映射:
public class BaseConfiguration : EntityTypeConfiguration<BaseClass>
{
    public BaseConfiguration()
{
    HasKey(k => k.Id);
    Property(p => p.Id).HasColumnName(\"Id\").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
}
}

public class DerivedConfiguration : BaseConfiguration
{
    public DerivedConfiguration()
{
    Property(p => p.Id).HasColumnName(\"BaseClassId\");
}
}
全部放在一起
public class MyContext : DbContext
{
    public MyContext(string connectionString) : base(connectionString)
{
    Database.SetInitializer<MyContext>(null);
}

public DbSet<BaseClass> Bases { get; set; }
public DbSet<DerivedClass> Deriveds { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new BaseConfiguration());
    modelBuilder.Configurations.Add(new DerivedConfiguration());
}
}
因此,您实例化了一个传入连接字符串的MyContext,并且配置告诉EF如何与表关联。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...