问题标签 [linq-to-entities]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
15561 浏览

c# - 如果不支持包含,您如何在 LINQ to Entities(实体框架)中执行 SQL 样式的“IN”语句?

我正在使用 LINQ to Entities(不是 LINQ to SQL),但在创建“IN”样式查询时遇到了麻烦。这是我目前的查询:

但是,当我这样做时,会引发以下异常:

LINQ to Entities 无法识别“Boolean Contains(Int64)”方法,并且该方法无法转换为存储表达式。

有没有人对此有解决方法或其他解决方案?

0 投票
1 回答
3069 浏览

linq - Linq to Entities, Table per Type 和 Nullable Foreign Key 关系

我正在将 Linq 用于应用每个类型方法的表的实体。到目前为止,这一直进展顺利。我有以下设置:

  • 父表
  • 子表(从父表继承)
  • 大子表(继承自子表)
  • 链接表(外键可为空,到子表)

这是数据库图

替代文字

在上述视频之后,我将 Table Per Type 方法应用于 Linq to 实体在将上述表添加到模型时创建的默认模式。

在按类型应用表之前:

替代文字

在每种类型的表之后:

替代文字

然后我编译了项目并得到了你可以在上图中看到的错误。为了解决这个问题,我去了外键链接的映射,我添加了 childid 字段,错误消息正在抱怨。

替代文字

然后我重新编译并得到另一个错误:

从第 147、176 行开始的片段映射问题:具有不同键的两个实体映射到同一行。确保这两个映射片段不会将具有重叠键的两组实体映射到同一组行。

这就是我现在的重点。问题似乎是“LinkingTable”上的“ChildID”为空。如果我将其设置为不可为空,我不会收到上述错误。

我已将上述步骤中使用的数据库和项目保存到天空驱动器

有谁知道如何解决这个错误?

戴夫

这是固定代码(感谢 The Gecko)

0 投票
6 回答
14166 浏览

linq-to-sql - LINQ To 实体和延迟加载

在今天的一篇有争议的博客文章中,Hackification 对新的 LINQ To Entities 框架中似乎存在的错误发表了看法:

假设我搜索客户:

很好,效果很好。现在让我们看看我是否能找到她的订单之一:

LINQ-to-SQL 将找到子行。LINQ-to-Entities 将不返回任何内容。

现在假设我遍历数据库中的所有订单:

现在重复我的搜索:

哇!LINQ-to-Entities 突然告诉我子对象存在,尽管之前告诉我它不存在!

我最初的反应是这一定是一个错误,但经过进一步考虑(并得到 ADO.NET 团队的支持),我意识到这种行为是由实体框架引起的,而不是在 Alice 被拉出时延迟加载 Orders 子查询数据上下文。

这是因为 order 是一个 LINQ-To-Object 查询:

并且没有以任何方式访问数据上下文,而他的 foreach 循环:

正在访问数据上下文。

LINQ-To-SQL 实际上为 Orders 创建了延迟加载的属性,以便在访问时执行另一个查询,LINQ to Entities 让您手动检索相关数据。

现在,我不是 ORM 的忠实粉丝,这正是原因。我发现,为了让您想要的所有数据触手可及,他们会在您背后重复执行查询,例如,上面的 linq-to-sql 查询可能会为每行客户运行一个额外的查询以获取订单.

然而,EF 不这样做似乎主要违反了最小意外原则。虽然它在技术上是正确的做事方式(您应该运行第二个查询来检索订单,或从视图中检索所有内容),但它的行为不像您对 ORM 所期望的那样。

那么,这是好的框架设计吗?还是微软在为我们考虑这个问题?

0 投票
1 回答
3994 浏览

entity-framework - 实体框架,基于标准构建查询

我想知道是否有人对如何做到这一点有更好的想法。自动取款机返回对我IQueryable<Member>来说ObjectQuery<Member>似乎很脏。

0 投票
2 回答
389 浏览

linq - 是否可以在不同的 LINQ 提供程序之上进行 LINQ 查询?

我目前正在考虑我的数据对象的存储库模式,其中IQueryable<>可以将多个实例注册为数据源,但让它运行似乎并不容易。

使用 LINQ to 实体和 LINQ To Objects 运行简单的 LINQ 查询不起作用。你认为这通常是可能的吗?也许唯一的解决方案是编写一个指定的提供者?

在我的存储库中,我调用.Union<>()了所有 IQueryable 实例,然后最后使用 LINQ 对生成的单个IQueryable. 结果是一个IQueryable被完全忽略了。

0 投票
11 回答
2315 浏览

.net - Linq 2 SQL 或 Linq 实体

我开始设计一个新的应用程序,我想知道人们对 Linq2SQL 或 Linq2Entities 的看法,以及他们认为快速开发的更好技术。

我也在对 ADO.net 数据服务进行一些研究。

0 投票
10 回答
79315 浏览

c# - 使用 Linq to Entities 的“包含()”解决方法?

我正在尝试使用 Silverlight ADO.Net 数据服务客户端 api(以及因此 Linq To Entities)创建一个查询,该查询在 where 子句中使用 id 列表。有谁知道不支持包含的解决方法?

我想做这样的事情:


试过这个:

但是得到“不支持方法'Any'”。

0 投票
2 回答
8306 浏览

entity-framework - Linq to Entities / Entity Framework 跨edmx“加入”

我有两个实体,每个实体来自不同的数据库,因此有不同的 edmx 文件。但是,它们之间存在推断的关系。

Foo例如有很多Bars。

用最少的数据库调用在 EntityFramework 中执行此连接的最简单方法是什么?

谢谢。

0 投票
1 回答
638 浏览

entity-framework - 实体框架 - 关联实体问题

我注意到,如果我有 Pk/FK 关联,则 FK ID 将从设计器中的实体中删除。如何加入查询语句?

基本上我正在寻找一些好的 Linq to Entity 视频教程(对不起,我是一个音频/视频学习者)

0 投票
4 回答
3697 浏览

c# - 使用 LINQ 如何按“计算字段”进行分组

我正在使用 LINQ to EF 并具有以下 LINQ 查询:

所以这种方式让我到达了我想去的地方,因为我得到了按年份分解的项目和那一年的项目数量。(即 2001 - 10、1975 - 15、2005 - 5、1976 - 1)我真正想做的事情是按十年(即 2000s - 15、1970s - 16)分解它们。

如何在 Linq 语句的 group 子句的“by”部分中有一个“计算字段”。我想我想要的基本上是这样的:

或者更一般的语法,这样我就可以做一些更复杂的评估/计算来做分组。有任何想法吗?

编辑(更新):

(x => x.Year.Value.ToString().Substring(0, 3) + "0s") - 不起作用 - “LINQ to Entities 无法识别 'System.String ToString()' 方法,而且这个方法不能翻译成商店表达式。”

(x.Year / 10 * 10) - 功能有效(谢谢) - 唯一的“问题”是“s”不在末尾(即 1970 与 1970 年代)

无论如何要在 by 子句中放置一个函数吗?即按 this.ManipulateYear(x.Year) 将 x 分组为几十年...或... x => x.Year.Value.ToString().Substring(0,3) + "0s" ?? 最好有一些技术(例如调用函数或使用 lambda 表达式),这样我就可以涵盖我能想到的任何情况。

再次感谢大家对此的帮助。