【问题标题】:ManyToMany Relation in EF Core fluent APIEF Core fluent API 中的多对多关系
【发布时间】:2021-01-18 17:57:33
【问题描述】:

我在实体框架 Core 中遇到了一个问题。

我想动态配置多对多关系,所以我使用了以下代码:

    var relationEntityBuilder = entityTypeBuilder1.HasMany(lambdaManyFirst)
                       .WithMany(lambdaManySecond).UsingEntity(j => j.ToTable(attribute.RelationTableName))

它几乎可以工作,但我仍然对 ForeignKey 有问题。

默认情况下,EF 尝试使用名为“ObJect1sId”和“Object2sId”的列,但在我的情况下,外键列名为“IdObject1”和“IdObject2”。

如何更改外键列名??

谢谢。

【问题讨论】:

    标签: .net-core entity-framework-core many-to-many ef-fluent-api


    【解决方案1】:

    您需要使用其他一些 UsingEntity 重载,它们允许您配置左右导航。

    例如

    entityTypeBuilder1
        .HasMany(lambdaManyFirst)
        .WithMany(lambdaManySecond)
        .UsingEntity<Dictionary<string, object>>(joinEntityName,
            j => j.HasOne<TEntity2>().WithMany().HasForeignKey(fkName2),
            j => j.HasOne<TEntity1>().WithMany().HasForeignKey(fkName1),
            j => j.ToTable(joinTableName)
        );
    

    【讨论】:

    • 谢谢它可以写作,但我仍然有阅读问题。对您的帖子稍加修改:缺少“>”来关闭 UsingEntity 的泛型。
    • 已更正。是的,配置 API 不是很直观/可读,但至少它存在 :-) j 这里代表“连接实体”,前两个 lambdas 配置从连接实体到第二个的两个多对一关系/首先涉及的实体。
    • @Ivan 过滤器在多对多关系中不起作用..请检查stackoverflow.com/questions/65804252/…
    猜你喜欢
    • 1970-01-01
    • 2012-09-22
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2018-06-02
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多