好吧,这应该很容易,但我一直在撕扯我的头发。这是我的 POCO(它与机器零件有关,所以一个零件可以包含在父零件中):
public class Part
{
public int ID { get; set; }
public string Name { get; set; }
public Part ParentPart { get; set; }
}
创建数据库表时,列名为“ID”、“Name”和“PartID”。如何将最后一列的名称更改为“ParentPartID”?
最佳答案
基本上,您想重命名独立关联中的外键,这是执行此操作的流畅 API 代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Part>()
.HasOptional(p => p.ParentPart)
.WithMany()
.IsIndependent()
.Map(m => m.MapKey(p => p.ID, "ParentPartID"));
}
但是,由于 CTP5 中的错误,此代码在自引用关联(这是您的关联类型)中作为异常抛出。解决方法是将您的关联更改为外键关联,如下所示:
public class Part
{
public int ID { get; set; }
public string Name { get; set; }
public int ParentPartID { get; set; }
[ForeignKey("ParentPartID")]
public Part ParentPart { get; set; }
}
关于hierarchical-data - EF4 CTP5 自引用分层实体映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612053/