使用实体框架在两个实体之间建立多对多关系

问题描述 投票:0回答:1

我有一个 C# 语言的 Windows 窗体应用程序项目。我正在使用实体框架。我是 EF 的初学者。

我有两个实体:

Machine
User

一个用户可以拥有多台机器,一台机器可以有多个用户。我想建立多对多的关系。我在当前状态下创建的类结构不适合我提到的任务,因为当我创建这样的迁移时,表会生成如下,并且我无法使用我想要的名称创建它。

这些是我的课程:

internal class Machine
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }  
    public List<User> users { get; set; }
}

internal class User
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }    
    public List<Machine> machines { get; set; }
}

数据库中生成的表如下:

1. 我建立多对多关系的方法正确吗?如果正确,如何创建具有所需名称的表及其列?
例如:在

MachineUser
表中,有两列名为
machinesid
usersid
。我想根据需要更改这些列的名称,例如 x 或 y。

2. 如何在这种多对多关系中指定所有者方?

注意:我没有在

OnModelConfiguring
方法中进行任何配置。

提前感谢您的回复。

c# entity-framework-core orm
1个回答
0
投票

您应该自己创建一个 MachinUser 实体并将其命名为您想要的任何名称。 该表应该有两个属性(MachineId、UserId 或任何您所说的名称),您应该将导航属性放入该实体中,如下所示:

internal class Machine
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }   
}

internal class User
{
    [Key]
    public int id { get; set; }
    public string name { get; set; }    
}

internal class MachineUser
{
    public int MachineId { get; set; }
    public int UserId { get; set; }
    public List<User> users { get; set; }
    public List<Machine> machines { get; set; }
}

该表的主键是 MachineId 和 UserId。

© www.soinside.com 2019 - 2024. All rights reserved.