我有以下型号:
public class SomeForm
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public IList<FacilityContactInformation> OriginatingFacilities { get; set; }
public IList<FacilityContactInformation> DestinationFacilities { get; set; }
}
public class FacilityContactInformation
{
public FacilityContactInformation()
{
Id = -1;
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[MaxLength(50)]
public string Owner { get; set; }
}
我正在使用自动迁移来生成和重新生成数据库架构。
这将生成错误“外键'FK_dbo.FacilityContactInformations_dbo.SomeForm_SomeForm_Id'引用表'FacilityContactInformations'中的无效列'SomeForm_Id'。无法创建约束。请参见先前的错误。
我怀疑根本原因是EF尝试为两个列表生成FK FK_dbo.FacilityContactInformations_dbo.SomeForm_SomeForm_Id
有什么办法可以继续使用自动迁移,但是可以使用它来生成可以正常运行的FK吗?似乎FK应该包括列表名称,并在FacilityContactInformations上生成两个属性,或者应该生成要连接的中间表。
当您有2个链接到同一类的导航属性时,应重写dbcontext类的OnModelCreating方法。然后将此代码添加到OnModelCreating中:
modelBuilder.Entity<SomeForm>
.Hasmany<FacilityContactInformation>(x => x.OriginatingFacilities);
modelBuilder.Entity<SomeForm>
.Hasmany<FacilityContactInformation>(x => x.DestinationFacilities);
这是因为EF无法确定正确的键(如果使用导航)。支柱。链接到同一个类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句