EF关系一对二

时间:2016-01-26 15:15:31

标签: c# asp.net-mvc entity-framework foreign-keys data-annotations

在数据库中保存一个有点复杂关系的模型时,我遇到了一些麻烦。

这些类的UML是: enter image description here

类定义是:

public abstract class EntityBase
{
    public virtual Guid Id { get; set; }
}

public class LoanRequest : EntityBase
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }  

    public virtual Applicant Applicant1 { get; set; }
    public virtual Applicant Applicant2 { get; set; }
}

public class Applicant
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    public Guid LoanRequestId { get; set; }
    [ForeignKey("LoanRequestId")]
    public virtual LoanRequest LoanRequest { get; set; }

    public virtual ICollection<MonthlyIncome> Incomes { get; set; }
}

public class MonthlyIncome
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    public Guid ApplicantId { get; set; }
    [ForeignKey("ApplicantId")]
    public virtual Applicant Applicant { get; set; }    
}

我能够运行迁移并查看数据库,框架创建的表和列对我来说似乎很好。但是,当保存异常时。例外是:

  

无法确定相关操作的有效排序。由于外键约束,模型要求或存储生成的值

,可能存在依赖关系

我一直在寻找互联网上的解决方案,我无法看到我的问题所在。有什么建议?谢谢!

1 个答案:

答案 0 :(得分:2)

经过多次尝试,我找到了解决方案。将申请人定义更改为:

public class Applicant
{
    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    public virtual ICollection<MonthlyIncome> Incomes { get; set; }
}

就是我所需要的一切