如何解决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如何与表关联。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。