为什么 EF Core 会虚构表名?

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

EF core 一直在编表名和列?

Table 'player_roles' doesn't exist

请记住,我正在使用 Snake_case 列命名。

我有5张桌子

  • 玩家
  • players_roles(桥接表)
  • 角色
  • roles_permissions(桥接表)
  • 权限

具有以下实体:

public class Role
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Player> Players { get; set; }
    public List<Permission> Permissions { get; set; }
}

public class Permission
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Player
{
    public int Id { get; set; }
    public List<Role> Roles { get; set; }
}

以及配置

modelBuilder.Entity<Player>()
    .HasMany(r => r.Roles)
    .WithMany(p => p.Players)
    .UsingEntity("players_roles");

EF 正在尝试查询player_roles?

原始 SQL

LEFT JOIN (
    SELECT `p10`.`players_id`, `p10`.`roles_id`, `p11`.`id`, `p11`.`name`
    FROM `players_roles` AS `p10`
    INNER JOIN `player_roles` AS `p11` ON `p10`.`roles_id` = `p11`.`id`
) AS `t0` ON `t`.`id` = `t0`.`players_id`
c# entity-framework
1个回答
-1
投票

这并不能回答你的问题,但我的建议是你通过上课来解决它

[Table("players_roles"]
public class PlayersRoles

使用按键等,从而避免流畅的API。

为什么会发生这种情况的答案会很有趣。 EF Core 在复数名称方面有一些魔力,所以我猜测它来自其中的一些。

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