我有2个型号:
public class GaOrgOrders
{
public virtual Guid Id { get; set; }
[ForeignKey("GaOrganizations")]
public virtual Guid OrgId { get; set; }
[ForeignKey("GaApps")]
public virtual Guid AppId { get; set; }
[ForeignKey("GaOrgUserOrganizations")]
public virtual Guid OrgUserId { get; set; }
[ForeignKey("GaServicesTariffs")]
public virtual Guid ServiceTariffId { get; set; }
public virtual bool IsTemporary { get; set; }
public virtual Apps GaApps { get; set; }
public virtual Organizations GaOrganizations { get; set; }
public virtual OrgUserOrganizations GaOrgUserOrganizations { get; set; }
public virtual GaServicesTariffs GaServicesTariffs { get; set; }
}
和
public class GaOrganizations
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual bool IsDeleted { get; set; }
}
当我尝试更新数据库并添加这些表时,出现错误:
介绍FOREIGN KEY约束' FK_GaOrgOrders_GaOrganizations_OrgId'在桌子上' GaOrgOrders'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。无法创建约束或索引。查看以前的错误。
如果我删除" ForeignKey"来自OrgId属性的属性 - 错误消失,但它在数据库中创建第二个字段(GaOrganizationsId)并使其成为FK。其他键工作正常。 OrgId有什么问题?
答案 0 :(得分:0)
EF并不了解这两个实体之间的关系,所以您可能需要在您的" OnModelCreating"中使用流畅的API来澄清。方法
使用类似
的内容modelBuilder.Entity<ClassB>().HasRequired(x => x.ClassA).WithOptional(x => x.ClassB);
其中ClassA和ClassB是我的实体,它们之间的关系为1到0或1。