我有一个 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
方法中进行任何配置。
提前感谢您的回复。
您应该自己创建一个 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。