EF Core中的一对一关系提供子项/相关异常

符文雅各布森

我有两个实体,分别代表该Web应用程序的用户和该Web应用程序所涉及的播客中的一个参与者。网页的用户具有个人资料,可以登录,可以发表评论等。参与者与他们出现的情节对象(具有传记,图片等)被链接起来。有可能既是参与者又是用户同时,也可以是用户或参与者。

我正在为EF Core 3.1建模。如果重要的话,我也为此项目使用.Net Core 3.0,并且数据库为Postgresql(使用Nuget包Npgsql.EntityFrameworkCore.PostgreSQL v3.1.0)。

双方的这种关系都应该为可空/不需要。实体非常简单(省略所有非importart属性):

用户:

public class User
{
    public Guid UserId { get; set; }
    public Participant Participant { get; set; }

    public Guid ParticipantId { get; set; }
}

参加者:

public class Participant
{
    public Guid ParticipantId { get; set; }

    public User User { get; set; }

    public Guid UserId { get; set; }

}

我正在尝试使用Fluent API来配置关系-这似乎是它崩溃的地方。

用户配置:

public class UserConfiguration : IEntityTypeConfiguration<User>
{
    public void Configure(EntityTypeBuilder<User> user)
    {
        user.ToTable("users");

        user.HasKey(u => u.UserId);

        user.HasOne(u => u.Participant)
            .WithOne(p => p.User)
            .HasForeignKey<Participant>(p => p.UserId);

    }
}

参与者配置:

public class ParticipantConfiguration : IEntityTypeConfiguration<Participant>
{
    public void Configure(EntityTypeBuilder<Participant> participant)
    {
        participant.ToTable("participants");

        participant.HasKey(p => p.ParticipantId);

        participant.HasOne<User>(p => p.User)
            .WithOne(u => u.Participant)
            .HasForeignKey<User>(u => u.ParticipantId);
    }
}

现在,我意识到您应该只配置关系的一侧-至少这就是我解释所读内容的方式。为了完整起见,我仅包括以上内容;我已经尝试过像上面一样一次配置双方,我已经尝试仅在用户端和参与者端进行配置。在每种组合中,代码都会编译,应用程序启动,但是当我尝试通过DbContext将用户实际添加到数据库时,我遇到了相同的异常:

System.InvalidOperationException: 'The child/dependent side could not be determined for the one-to-one relationship between 'Participant.User' and 'User.Participant'. To identify the child/dependent side of the relationship, configure the foreign key property. If these navigations should not be part of the same relationship configure them without specifying the inverse. See http://go.microsoft.com/fwlink/?LinkId=724062 for more details.'

现在,这是彼此完全了解的两个完全独立的对象,因此我不确定孩子/受抚养人的心态是否准确,但是我愿意忽略这一细节而屈服于EF Core的意愿。但是,我无法弄清楚如何让我毫无例外地工作。

TL; DR:

  • 用户可以有一个参与者链接。
  • 参与者可以具有用户链接。
  • 将该链接设为NULL都很好。
  • 如何为此配置EF Core?

感谢您的任何见解!

so

我会仔细检查您的配置是否正在被调用。看起来一切正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF:一对一关系中的外键?

来自分类Dev

EF Core中的一对一关系(无法确定孩子/受抚养人之间的一对一关系)

来自分类Dev

EF7一对一关系

来自分类Dev

如何在EF Core中设计仅指向一个方向的一对一关系

来自分类Dev

一对一关系中的EF LEFT OUTER JOIN而不是INNER JOIN

来自分类Dev

是否可以在EF中以一对一关系分配外键?

来自分类Dev

与 EF 中的许多表建立一对一关系

来自分类Dev

ef core 中同类型的一对一和一对多关系

来自分类Dev

一对一的反身关系 ef core

来自分类Dev

EF关系一对一

来自分类Dev

EF一对一的必要关系

来自分类Dev

EF代码优先:使用数据注释设置可选的一对一关系

来自分类Dev

一对零或一对一关系的实体框架(EF)代码优先级联删除

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

EF Core 2.0 中的种子一对多关系

来自分类Dev

EF一对一无效

来自分类Dev

EF 6中的一对一属性不会更新。

来自分类Dev

在EF设计器中创建一对一的参考?

来自分类Dev

EF一对一的关系变更实体与另一个(替代)

来自分类Dev

当相关表首先引用时一对一的 EF 迁移问题

来自分类Dev

一对一数据库优先EF

来自分类Dev

如何在EF中配置一对多关系

来自分类Dev

EF中的一对一仅产生一个外键

来自分类Dev

在Swift中以一对一关系插入NSManagedObject

来自分类Dev

模式中建立一对一关系的方法?

来自分类Dev

如何删除一对一关系中的实体?

来自分类Dev

流中的双向一对一关系

来自分类Dev

在 Laravel 中显示一对一关系的结果

Related 相关文章

热门标签

归档