使用 Include 进行 EF Core 联接,但外键不是另一个表上的主键

2023-11-30

我试图将我的表与另一端的外键和主键关联起来。但现在我将使用外键,它不是所述表的主键。我正在使用[逆性质]但我认为它有一个错误,因为我已经环顾四周几个小时了,而且所有人都说同样的事情。

文件表:

public class Document
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DocumentId { get; set; }
    public int ProjectId { get; set; }
    public int DepartmentId { get; set; }
    public int AuthorId { get; set; }

    [NotMapped]
    public virtual User Author { get; set; }
}

Users

public class User
{
    [Key]
    public int UserId { get; set; }
    public int AuthUserId { get; set; }
    public string DisplayName { get; set; }

    [NotMapped]
    [ForeignKey("AuthorId")]
    public virtual Document Document { get; set; }
}

Context:

modelBuilder.Entity<User>(entity =>
        {
            entity.HasOne(u => u.Document)
            .WithMany("AuthorId");
        });

我正在尝试使用他们的解决方案here,但没有运气。

任何帮助将不胜感激。谢谢!


但现在我将使用外键,它不是所述表的主键。

为此,您可以使用 EF Core备用键特征。但首先要更正您的模型类设置,如下所示:(正如您所说User会有多个Document)

public class Document
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int DocumentId { get; set; }
    public int ProjectId { get; set; }
    public int DepartmentId { get; set; }
    public int AuthorId { get; set; }

    public User Author { get; set; }
}

public class User
{
    [Key]
    public int UserId { get; set; }
    public int AuthUserId { get; set; }
    public string DisplayName { get; set; }


    public ICollection<Document> Documents { get; set; }
}

然后在Fluent API配置如下:

modelBuilder.Entity<Document>()
        .HasOne(p => p.Author)
        .WithMany(b => b.Documents)
        .HasForeignKey(p => p.AuthorId)
        .HasPrincipalKey(b => b.AuthUserId); // <-- here you are specifying `AuthUserId` as `PrincipalKey` in the relation which is not primary key
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Include 进行 EF Core 联接,但外键不是另一个表上的主键 的相关文章

随机推荐

  • 在 MVC 4 中将图像附加到 ActionLink

    我在 MVC 4 应用程序中使用带有 id 的 ActionLink 并在 css 中分配 actionLink id 图像 但实际上我做错了 不管用 这是我的代码 div class logo container Html ActionL
  • 设置 NSManagedObject 上双精度属性的值

    我正在尝试在我的应用程序上实现地图功能 但是 我希望将纬度和经度从存储在核心数据中的对象传递到地图中 但是 当我启动应用程序时 我在设置对象的初始值时遇到问题 到目前为止 我已经尝试了两种不同的方法 每种方法收到的错误都是 将 double
  • 从互联网上的txt文件中获取文本

    我有一个 uwp 我需要从互联网上保存的 txt 文件中获取文本以进行字符串下载文件并将文本获取到字符串时遇到问题 这是我的代码 var webRequest WebRequest Create http yourUrl using var
  • missViewControllerAnimated自定义动画

    我试图用自定义动画调用missViewControllerAnimated 但它似乎不起作用 当我呈现视图控制器时 如下所示 cameraUI UIImagePickerController cameraUI delegate self c
  • WinSxS:如何依赖特定版本的gdiplus.dll?

    我需要添加对特定版本的 GDIPlus 的依赖项 这是我想要的 GDI 版本 我想确保我使用此版本是出于特定的兼容性原因 我已将程序集清单添加到我的可执行文件中 定义了对版本的依赖关系GdiPlus
  • Visual Studio 调试控制台有时保持打开状态并且无法关闭

    编辑 3 微软已经发布了对此问题的 修复 可用here 我还没有时间测试它 但欢迎那些想要测试的人在这里留下他们的反馈 有时 当我从 Visual Studio 运行应用程序并且它崩溃或使用调试菜单中的停止按钮 调试 gt 停止调试 Shi
  • 几天后刷新令牌已自动过期

    我们在 Google API 控制台上有 Google OAuth2 Web 客户端 在 Oauth Web 客户端的帮助下 我们为每个用户获取刷新令牌 通过使用 Web 身份验证和 Concert Screen 我们将收到的刷新令牌存储到
  • 想要 javascript 中 $bhai 的值

    bin sh echo Content type text html echo echo echo echo echo echo
  • 使用列表列表创建子报表

    我有一个目标列表 每个目标都有另一个 ArrayList 我希望使用子报表显示子 ArrayList 中的详细信息 我想要子 ArrayList 中的每个对象都有一个子报告 我面临的问题是 我似乎找不到一种方法来指定子报表的 ArrayLi
  • Git:多个项目可以使用相同的子模块工作副本吗?

    我是 Git 新手 可以说 我有两个 git 存储库 它们添加了相同的库作为子模块 home projects project1 library XYZ home projects project2 library XYZ 另外可以说 我正
  • 如何调整 Quartz 2D 上下文以适应 Retina 显示屏?

    我有一个 Quartz 2D 游戏 它直接绘制到上下文中 因此 我必须调整代码 以便它可以在适合视网膜显示屏的情况下进行缩放 我使用以下代码执行此操作 CGFloat displayScale if UIScreen mainScreen
  • 在 Struts2 中使用 Tuckey URL Rewrite 进行 URL 重写时需要帮助

    我想重写基于 Struts2 的应用程序的 URL 当前在开发环境中 我搜索了它并找到了 Tuckey URL Rewrite 并将其设置在我的项目中 现在我想要我的登录网址http localhost 8080 MyProject loa
  • SparkR的安装

    我有最新版本的 R 3 2 1 现在我想在 R 上安装 SparkR 执行后 gt install packages SparkR 我回来了 Installing package into home user R x86 64 pc lin
  • 将 ECPublicKey 从 JavaCard 恢复到 Java

    我正在尝试在终端 由我的计算机模拟 和智能卡 Java Card 之间实现 ECDH 我修复了我想要使用的椭圆曲线 并且在卡端我有以下代码来运行协议的第一部分 ECPublicKey pubKey ECPublicKey KeyBuilde
  • 当某些原始值相同时反转字典

    假设我有一本字典叫做word counter dictionary计算表单中文档中有多少个单词 word number 例如 第二 一词出现一次 因此键 值对将是 secondly 1 我想制作一个倒排列表 以便数字将成为键 单词将成为这些
  • Python 多处理 - 进程数

    我正在执行下面的代码 它工作正常 但它不会生成到不同的进程 而是有时所有代码都在同一个进程中运行 有时是两个进程合二为一 我使用的是 4 个 cpu 的机器 这段代码有什么问题吗 def f values print multiproces
  • 使用 POI 解析 Excel 但出现异常“无效的标头签名”

    我试图使用 Apache POI 版本 3 6 来解析 Excel xls 文件 但只得到异常 java io IOException Invalid header signature read 0x07B1FD124BEDF108 exp
  • 隐藏 URL 中的参数值 (guid)

    在我的路线中 when user user guid templateUrl users profile html controller userController In my index html内ng repeat I have a
  • 将 ReactiveList 绑定到 ComboBox 找不到视图错误

    我将 ReactiveList 绑定到视图代码隐藏中的 ComboBox 并收到错误System Exception 找不到 Value1 的视图 ViewModel cs public class SourceItem public ov
  • 使用 Include 进行 EF Core 联接,但外键不是另一个表上的主键

    我试图将我的表与另一端的外键和主键关联起来 但现在我将使用外键 它不是所述表的主键 我正在使用 逆性质 但我认为它有一个错误 因为我已经环顾四周几个小时了 而且所有人都说同样的事情 文件表 public class Document Key