是否可以使用Entity Framework Code First进行以下映射?
public class Parent
{
[Key]
public int ID {get; set;}
public string statecode{get; set;}
public virtual ICollection<Child> children{get; set;}
}
public class Child
{
[Key, Column(Order = 0)]
public string StateFromCode { get; set; }
[Key, Column(Order = 1)]
public string StateToCode { get; set; }
}
我想在我的dbcontext中指定一个关系,其中延迟将子项加载到Parent和Parent.statecode == Child.StateToCode中。请注意,StateToCode是Child键的一部分,而不是整个主键。如果可能的话,我应该在下面的数据库上下文中指定什么才能实现?
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Parent>().HasMany(x=>x.children)..............
}
答案 0 :(得分:2)
这是不可能的 - 特别是不能首先使用代码,其中关系必须遵循与在数据库中指定引用约束完全相同的规则。因此唯一有效的关系将需要Parent
表中Child
的Id列和此列的外部约束