gpt4 book ai didi

entity-framework - DbContext - 三个表之间的多对多关系

转载 作者:行者123 更新时间:2023-12-04 06:26:09 25 4
gpt4 key购买 nike

好吧,我一直在尝试在三个表之间建立多对多关系。
论坛、角色、访问掩码。
在 SQL 中它会是这样的:

ForumID | RoleID | AccessMaskID
--------------------------------
1 | 1 | 2
2 | 2 | 1

等等。你明白了。 ForumID 和 RoleID 是表的主键。问题是..如何在 DbContext 中做到这一点?
它惊叫着实体丢失了 key 。 (真的 ?)。我找到了一种使用模型构建器在两个表之间建立多对多关系的方法,但是正如您所看到的,我仍然会缺少一个表

最佳答案

这不会是多对多的关系。您必须将此表公开为单独的实体并映射三个一对多关系。如果连接表仅包含这些表的键,则多对多关系仅适用于两个表之间。

public class Forum
{
public int Id { get; set; }
...
public virtual ICollection<ForumRole> ForumRoles { get; set; }
}

public class Role
{
public int Id { get; set; }
...
public virtual ICollection<ForumRole> ForumRoles { get; set; }
}

public class AccessMask
{
public int Id { get; set; }
...
public virtual ICollection<ForumRole> ForumRoles { get; set; }
}

public class ForumRole
{
[Key, Column(Order = 0)]
public int ForumId { get; set; }
[Key, Column(Order = 1)]
public int RoleId { get; set; }
public int AccessMaskId { get; set; }

public virtual Forum Forum { get; set; }
public virtual Role Role { get; set; }
public virtual AccessMask AccssMask { get; set; }
}

关于entity-framework - DbContext - 三个表之间的多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024265/

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