c# - 使用 Entity Framework 4 选择具有非标量键列表的多行的好方法

标签 c# .net sql-server-2008 entity-framework entity-framework-4

我正在使用 EF 4,我正在尝试找到一种好方法来选择主键使用多列并使用对象列表进行搜索的记录。到目前为止,这是我尝试过但没有成功的方法:

我有一个 Foo 类型的对象列表。 Foo 有两个属性,A 和 B。Order 表的主键是列 A 和 B。

var orders = (from o in context.Orders
              where FooList.Contains(new Foo { A = o.A, B = o.B }
              select o);

这会引发一个错误,提示我只能使用标量值。据我所知,我需要 FooList 成为标量列表。我也尝试加入我的对象列表,但这也没有用:

var orders = (from o in context.Orders
              join foo in FooList
              on new { foo.A, foo.B } equals new { o.A, o.B }
              select o)

显然,我可以遍历 FooList 中的所有值,获取我需要的顺序并更新它,但在我目前的情况下这非常慢(FooList 中大约有 6000 个值)。

有什么想法吗?

最佳答案

您仍然可以使用(变体)the BuildContainsExpression workaround这在 EF 4 之前是必需的。

生成的 SQL 将是相同的。

关于c# - 使用 Entity Framework 4 选择具有非标量键列表的多行的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285079/

相关文章:

c# - .NET 应用程序和性能监控

c# - 如何重新加载/刷新 app.config?

performance - 优化查询以减少 i/o 压力是否有意义?

sql - Where 子句中的保留关键字

c# - 具有运行空间模拟的 MVC Controller

c# - 实现中的特定 A* 寻路问题

c# - 如何从 C# 中加载的 SSIS 包捕获事件?

c# - 未捕获的语法错误 : Unexpected identifier in StringBuilder

.net - 容器可以共享一个框架吗?

sql-server-2008 - 连接到 SQL Server 2008 的最大并发用户数