我在弄清楚我在做错的事情时遇到了麻烦。我使用asp.net Identity并创建了一个名为Person
的新实体。我更新了ApplicationUser
类以引用Person
。我想创建一个从Person
到User
的导航属性。但是当我执行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;}
}
由于
答案 0 :(得分:2)
在1:1
关系中,一端必须是 principal ,第二端必须是依赖。 Principal end是将首先插入的,并且可以在没有依赖的情况下存在。 依赖结束是必须在主体之后插入的结尾,因为它具有主体的外键。在这里,您需要将[Required]
属性添加到 principal ,并从模型中删除[ForeignKey("ID")]
。
此外,您还在模型中结合了延迟加载(Virtual
属性)和急切加载功能。