微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在实体框架核心中,当两个字段映射到另一个表的主键时,我们如何为一个表设置关系

如何解决在实体框架核心中,当两个字段映射到另一个表的主键时,我们如何为一个表设置关系

在实体框架核心中,当两个字段映射到另一个表的主键时,我们如何为一个表设置关系。 例如,我有两个表,分别是 Users 和 CashBox

用户

字段 价值
用户 ID 内部
用户名 字符串

钱箱表

字段 价值
CashBoxId 内部
ActivatedBy 内部
DeactivatedBy 内部

在这种情况下,activatedby 和deactivatedby 必须与用户表相关联。需要知道谁激活了钱箱和谁停用了钱箱。

使用 EF 核心代码优先方法

解决方法

使用以下实体模型 -

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

public class CashBox
{
    [Key]
    public int CashBoxId { get; set; }
    public int ActivatedBy { get; set; }
    public int DeactivatedBy { get; set; }

    public User ActivatedUser { get; set; }
    public User DeactivatedUser { get; set; }
}

您可以将关系配置为 -

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<CashBox>(e =>
    {
        e.HasOne(p => p.ActivatedUser)
        .WithMany()
        .HasForeignKey(p => p.ActivatedBy);

        e.HasOne(p => p.DeactivatedUser)
        .WithMany()
        .HasForeignKey(p => p.DeactivatedBy);
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。