gpt4 book ai didi

c# - EF——无法确定类型之间关联的主体端

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:47 25 4
gpt4 key购买 nike

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

Unable to determine the principal end of an association between the types 'myapp.Models.ApplicationUser' and 'myapp.Models.DataModels.Person'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

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 的 Virtual 属性设置任何内容,例如 person.user = user;

我已尝试遵循此 Unable to determine the principal end of an association between the types通过对虚拟属性(property)执行以下操作:

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

谢谢

最佳答案

1:1 关系中,一端必须是主体,第二端必须是从属主体 端是第一个 插入的端,它可以存在而没有从属端从属 端是必须插入主体 之后的端,因为它具有主体 的外键。在这里,您需要将 [Required] 属性添加到 principal 并从模型中删除 [ForeignKey("ID")]

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

关于c# - EF——无法确定类型之间关联的主体端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com