C# EF一对二关系

C# EF一对二关系,c#,asp.net-mvc,entity-framework,foreign-keys,data-annotations,C#,Asp.net Mvc,Entity Framework,Foreign Keys,Data Annotations,在数据库中保存一个关系有点复杂的模型时,我遇到了一些问题 类的UML是: 类别定义如下: public abstract class EntityBase { public virtual Guid Id { get; set; } } public class LoanRequest : EntityBase { [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { ge

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

类的UML是:

类别定义如下:

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; }    
}
公共抽象类EntityBase
{
公共虚拟Guid Id{get;set;}
}
公共类贷款请求:EntityBase
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共Guid Id{get;set;}
公共虚拟申请者应用程序1{get;set;}
公共虚拟申请者应用程序2{get;set;}
}
公开课申请人
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共Guid Id{get;set;}
公共Guid LoanRequestId{get;set;}
[外汇(“贷款请求”)]
公共虚拟LoanRequest LoanRequest{get;set;}
公共虚拟ICollection{get;set;}
}
公课每月一次
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共Guid Id{get;set;}
公共Guid应用程序ID{get;set;}
[外键(“应用程序ID”)]
公共虚拟申请人{get;set;}
}
我能够运行迁移并查看数据库,框架创建的表和列对我来说很好。但是,保存异常时会发生。例外情况是:

无法确定从属操作的有效顺序。依赖关系可能由于外键约束、模型要求或存储生成的值而存在


我一直在互联网上寻找解决方案,但我看不出我的问题在哪里。有什么建议吗?谢谢

经过几次尝试,我终于找到了解决办法。将申请人定义更改为:

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

    public virtual ICollection<MonthlyIncome> Incomes { get; set; }
}
公共类申请人
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
公共Guid Id{get;set;}
公共虚拟ICollection{get;set;}
}

这就是我所需要的

你想保存什么?保存方法是什么样子的?