繁体   English   中英

首先在EF Core代码中创建外键

[英]Foreign Key creation in EF Core code first

我有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; }
}

当我尝试更新数据库并添加这些表时,出现错误:

在表“ GaOrgOrders”上引入FOREIGN KEY约束“ FK_GaOrgOrders_GaOrganizations_OrgId”可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。 请参阅先前的错误。

如果我从OrgId属性中删除“ ForeignKey”属性-错误消失了,但它在数据库中创建了第二个字段(GaOrganizationsId)并将其设置为FK。 其他键工作正常。 OrgId怎么了?

EF无法理解两个实体之间的关系,因此您可能需要在“ OnModelCreating”方法中使用流利的API进行澄清。

使用类似

modelBuilder.Entity<ClassB>().HasRequired(x => x.ClassA).WithOptional(x => x.ClassB);

其中ClassA和ClassB是我的实体,它们之间具有1到0或1的关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM