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

时间:2015-01-25 00:57:23

标签: c# asp.net-mvc entity-framework entity-framework-6

我在弄清楚我在做错的事情时遇到了麻烦。我使用asp.net Identity并创建了一个名为Person的新实体。我更新了ApplicationUser类以引用Person。我想创建一个从PersonUser的导航属性。但是当我执行Update-Database时,我不断收到错误消息

  

无法确定类型&my; 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;}
}

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

ApplicationUser user = new ApplicationUser {...} 

Person person = new Person {....} 
user.person = person;

我还想知道是否需要为Person person.user = user的虚拟财产设置任何内容;

我已尝试通过在虚拟财产上执行以下操作来关注此Unable to determine the principal end of an association between the types

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

由于

1 个答案:

答案 0 :(得分:2)

1:1关系中,一端必须是 principal ,第二端必须是依赖 Principal end是将首先插入的,并且可以在没有依赖的情况下存在。 依赖结束是必须在主体之后插入的结尾,因为它具有主体的外键。在这里,您需要将[Required]属性添加到 principal ,并从模型中删除[ForeignKey("ID")]

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