【问题标题】:Entity Framework Core Find and Composite Key实体框架核心查找和复合键
【发布时间】:2018-06-05 13:31:11
【问题描述】:

Find() 方法采用一组对象来描述您尝试查找的主键。该文档不清楚如何处理复合主键。我尝试搜索 GitHub 存储库,但找不到 Finder.Find() 方法的源代码。

例如,我使用 fluent API 定义了以下复合主键:

modelBuilder.Entity<Article>()
    .HasKey( x => new { x.CommunityID, x.ArticleID } );

我会这样称呼Find()吗:

Find( new object[] {1, 2} );

或者像这样:

Find( new object[] { new {CommunityID = 1, ArticleID = 2} } );

如果是第一种方式,参数的顺序是否和fluent API匿名对象上定义的属性顺序一样?

【问题讨论】:

    标签: c# entity-framework-core


    【解决方案1】:

    查找的签名为:params object[] keyValues

    不需要传入数组,只需要分别传入每个键即可:

    .Find(1, 2);
    

    如果是第一种方法,参数的顺序是否相同 fluent API 匿名对象上定义的属性顺序?

    是的,您需要按照在 fluent API 映射中定义的相同顺序传递 PK。

    【讨论】:

    • 这没有回答问题
    • 谢谢。那么 Find 的参数顺序是否匹配 Fluent API 调用的顺序?
    • @MarkOlbert 确实如此。参数的描述是要查找的实体的主键的值。,还有什么可能。换句话说,fluent API 定义了 PK 列,Find 需要 PK 列值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2021-09-03
    • 2020-07-08
    • 2016-05-20
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多