EF -- 无法确定类型之间关联的主要端

use*_*415 3 c# asp.net-mvc entity-framework entity-framework-6

我无法弄清楚我在这里做错了什么。我正在使用 asp.net Identity,并且创建了一个名为Person. 我更新了ApplicationUserClass 以引用Person. 我想从创建一个导航属性PersonUser。但是当我执行更新数据库时,我不断收到错误消息

无法确定类型“myapp.Models.ApplicationUser”和“myapp.Models.DataModels.Person”之间关联的主要端。必须使用关系流畅 API 或数据注释显式配置此关联的主体端。

public class Person 
{
    public Guid ID {get; set;}
    ...
    public virtual ApplicationUser user {get; set;}
}

public class ApplicationUser
{
    ...
    public Person person {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

在代码中,我正在执行以下操作

ApplicationUser user = new ApplicationUser {...} 

Person person = new Person {....} 
user.person = person;
Run Code Online (Sandbox Code Playgroud)

我还想知道是否需要为Person此类的 Virtual 属性设置任何内容person.user = user

我试图通过对虚拟属性执行以下操作来遵循无法确定类型之间关联的主要端

public class Person 
{
    public Guid ID {get; set;}
    ...
    [ForeignKey("ID")]        
    public virtual ApplicationUser user {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ami*_*rzi 5

1:1关系中,一端必须是主要的,而另一端必须是从属的主要终点是将被插入所述一个第一和能够不依赖一个存在依赖到底是其中一个必须本金后插入,因为它具有外键本金。在这里,您需要向主体添加[Required]属性并从模型中删除。[ForeignKey("ID")]

此外,您在模型中结合了延迟加载Virtual属性)和预先加载功能。