如何在 EF 多对多关系中指定加入者 table 的名称?

How do I specify the name of a joiner table in an EF many to many relationship?

我正在使用 EF Code First 6.2 和 Dev Express XAF 在 DevExpress.Persistent.BaseImpl.EF 中,事件 class 与资源 class 具有多对多关系。

如果我使用 Dev Express Wizard 和 Code First 创建一个新项目,那么加入者 table 将被称为 ResourceEvents

然而,在某些迁移中,我的加入者 table 被重命名为 EventResources。

如何将其设置回应有的状态? 我尝试将以下内容添加到 DBContext

        modelBuilder.Entity<Event>().HasMany(x => x.Resources).WithMany(x => x.Events)
            .Map(
                x =>
                {
                    x.MapLeftKey("Event_ID");
                    x.MapRightKey("Resource_Key");
                    x.ToTable("ResourceEvents");
                });

这导致迁移想要创建

  public partial class ev : DbMigration
    {
  public override void Up()
    {
        DropPrimaryKey("dbo.ResourceEvents");
        AddPrimaryKey("dbo.ResourceEvents", new[] { "Event_ID", "Resource_Key" });
    }

    public override void Down()
    {
        DropPrimaryKey("dbo.ResourceEvents");
        AddPrimaryKey("dbo.ResourceEvents", new[] { "Resource_Key", "Event_ID" });
    }

}

运行 迁移导致错误

Cannot find the object "dbo.ResourceEvents" because it does not exist or you do not have permissions.

诀窍是向迁移添加代码以重命名 table

RenameTable(name: "dbo.EventResources", newName: "ResourceEvents");

拥有流利的 API 似乎很重要,因为它可以让 EF 知道 table 的名称应该是什么。