gpt4 book ai didi

c# - EF 通过一组复合键查找

转载 作者:行者123 更新时间:2023-11-30 16:41:52 25 4
gpt4 key购买 nike

使用 EF6,我可以使用 Find(key1.a, key1.b) 方法通过复合主键获取实体。

是否可以对多个键做同样的事情,即

var keys = new [] {new {a = 1, b = 2}, new {a = 2, b = 3}, /*etc*/};
var entities = context.Items.Find(key1.a, key1.b, key2.a, key2.b, ..., keyN.a, keyN.b);

更新:

另外想知道为什么EF有Find和LINQ的WhereSingle等两种key搜索方式。

最佳答案

documentation这里很清楚:那是不可能的

  1. 它只返回一个实体
  2. 如果存在多个具有给定主键的实体,它实际上会抛出异常,如果您可以传递多个 PK 值,则很容易出现这种情况

最好的做法是使用 LINQ 的 Where:

context.Items.Where(x => keys.Any(y => y.a == x.a && y.b == x.b))

关于c# - EF 通过一组复合键查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47922307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com