问题标签 [ef-core-5.0]

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 回答
12000 浏览

c# - EF Core 3.1 / EF Core 5.0 中的 GroupBy 不起作用,即使是最简单的示例

我正在将 EF6.x 项目更新到 EF Core 3.1。决定回到基础,并以如何再次从头开始建立关系为例。

根据微软官方文档EF Core Relationship Examples,我将示例翻译成控制台应用程序如下:

数据库中没有数据。EF Core 无法转换

到商店查询。在我看来,这似乎是您可以尝试的最简单的 GroupBy 示例。

当您运行此代码时,您会收到以下异常:

让它工作的唯一方法是在GroupBy.

从性能的角度来看,这显然不是很好,它将分组操作变成了客户端操作,您确实希望在服务器端进行分组。

我错过了什么明显的东西吗?我很难相信 EF Core 不能按照 EF 框架从第一天起就一直在做的最简单的组。这似乎是任何数据驱动应用程序的基本要求?(或任何具有少量数据的应用程序!)

更新: 在此处输入图像描述

添加属性,例如相关博客的主键没有任何区别。

更新 2:

如果您关注这篇 JetBrains 文章,您可以这样做:

不是这个:

它仅适用于聚合函数,例如上面的计数。

SQL中类似的东西有效

但是,删除聚合函数,COUNT 不会,您会收到类似于以下内容的消息:

Column 'EntertainmentDb.dbo.Ratings.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

所以看起来我想问 EF Core 一个我不能在 TSQL 中问的问题

0 投票
1 回答
2189 浏览

c# - EF Core 过滤包含:“包含中使用的 Lambda 表达式无效”

我正在尝试使用带有 EF Core 5.0.0 的新“过滤包含”功能来使用一个非常基本的功能,

https://docs.microsoft.com/en-us/ef/core/querying/related-data

但我遇到了一个问题。它给出了以下错误:

这是导致它的代码片段。根据文档,我相信我的逻辑是正确的。我不确定为什么会这样。有什么我想念的吗?



供应商是项目的父项。这是一个非常基本的设置。一对(供应商)对多(项目)关系。

0 投票
0 回答
823 浏览

sqlite - Xamarin 上的 EF Core SQLite 启动速度慢

我遇到了 Xamarin.Android 应用程序的缓慢启动体验。

第一个 DbContext 创建大约需要 4.5 秒(上下文有 24 个表)。起初我认为这是因为 EF Core 需要时间来扫描 DbContext 中的实体类并构建模型(这对于大型 DbContext 是有意义的)。

于是,我创建了一个只有一张表的测试 DbContext 来检查创建模型的时间对模型中表的数量的关系:

DbContext 测试代码:

在我的三星 Galaxy S7 上执行此代码需要3.3 秒。该测试表明尝试某些解决方案是不合适的:

  • 使用更少的实体类(减少表之间的连接);
  • 将一个应用程序 DbContext 拆分为几个小的上下文。

我还了解到:

  • EF Core 没有自动迁移(我不需要禁用它);
  • 我删除了代码优先方法,但它只是部分帮助将 DbContext 初始化时间减少到 4 秒;
  • 如果我删除带有 EnsureCreated 的行,第一个请求的执行时间会同时增加;
  • 有很多类似的问题(这里,GitHub),但他们没有解决方案。甚至 EF6 也报告了此类问题;
  • 安装 Microsoft.EntityFrameworkCore.Sqlite 5.0.0-preview.6.20312.4 后我没有注意到任何重大变化(应用程序具有相同的执行时间:~ 3.3 秒);
  • PRAGMA journal_mode=WAL; 提高初始化速度(EF Core 2.2)。这并不稳定,但有时初始化时间会减少 300-400 毫秒。
  • 如果应用程序有 2 个用于不同数据库的 DbContext(第一个具有一个实体,第二个具有 25 个实体)第二个上下文的 EF Core 初始化时间将大幅减少到~1 秒。第一次上下文初始化仍然很慢;
  • 在没有附加调试会话的情况下,初始化完成速度更快 (~30%)。

EF Core 5 Preview 6 GitHub示例

在此处输入图像描述 在此处输入图像描述

我可以使用什么方法以某种方式向用户隐藏此初始化时间,但获取主要活动的数据?

是否有任何配置提示可以帮助增加默认配置初始化时间?

运行 .NET 5 时性能会提高吗?

0 投票
0 回答
94 浏览

entity-framework - 将 Blazor 服务器中的 EF Core 5.0 查询记录到控制台

将 EF 核心 5.0 查询记录到 Blazor 服务器 .NET 5 控制台的最佳方法是什么?

我想知道为什么没有关于这个主题的任何线程。

0 投票
1 回答
884 浏览

linq - ef core 5.0 如何过滤包含

我正在尝试使用新功能 Filtered on Include 但我没有以某种方式正确。 https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-5.0/whatsnew#preview-3

我有一个带有类别的产品。我需要在类别标题/名称上过滤产品。这是多对多的关系。

类别标题应包含“Vlees”。但不知何故,数据库中的所有6 个产品都会返回,即使 Category.Title 名称错误。

在此处输入图像描述

0 投票
1 回答
67 浏览

c# - 按可空导航属性的属性分组时如何传播导航属性的空值

假设我们在 EfCore 中有这些实体......

...我们希望得到相同的平均值 RateEntitiesAnotherNavigationProperty

我尝试的 efcore 查询抛出“System.InvalidOperationException:Nullable 对象必须有一个值”。

我知道 EfCoreToQueryString()在查询返回时已成功翻译

在数据库上运行时正确返回我需要的结果

如何提示 EfCore 传播 null 导航属性?(因为表达式树不能包含空传播?.运算符)

0 投票
0 回答
161 浏览

asp.net-core - EF Core 5.0 RC1 表架构

我刚刚将我的 Blazor 演示项目升级到 EF Core 5.0 RC1,以便利用它提供的新的多对多功能。完成升级后,我运行了我的单元测试,它们都失败并出现相同的错误:“无效的对象名称”

经过一番调查,我确定该查询不再包括查询中的表模式。由于我的所有表都属于 dbo 以外的模式,因此我的所有查询都不起作用。我试图弄清楚如何让 ef core 5.0 使用表模式,但我没有任何运气。

我正在使用 Table 属性在模型上指定模式,如下所示。

我在升级后执行了迁移并编写了脚本,并且所有表都有正确的架构,所以很明显 ef 能够看到架构,但由于某种原因,它离开了查询。

感谢您提供的任何帮助。

0 投票
1 回答
3736 浏览

c# - 带有子选择的EF Core 5.0 Union Linq查询不起作用

目标:

我想将来自具有不同属性的两个表(实体A 和实体B)的信息组合到一个unionDto。我正在尝试通过联合操作来实现这一点,以同时过滤数据库中的不同实体。

但是我使用的结构需要在联合查询之前需要过滤的版本。

一些附加信息:

所以我在最后一个查询中要做的是:首先我将表“entityA”“entityB”中的信息投影到通用“匿名”类型(带有联合)。然后我尝试应用分页,然后我尝试将新的匿名结果“投影”UnionDto。因此,这将导致一个 UnionDto 具有“来自 2 个不同表的信息”

我用两个具有版本的实体创建了一个问题示例:

实体:

我正在设置这样的查询:

执行查询:

似乎我无法在联合查询中使用子选择,并且出现以下错误:

设置操作:在投影中的客户端评估后放置时支持 #16243

我不知道,我必须做些什么来解决这个问题,因为我真的不想通过单独的数据库查询来处理我的所有实体。

当前使用 Ef core 版本:5.0.100-preview

现在这只是一个例子。这将需要至少 10 个实体,如果单独为每个实体完成,这将导致高数据库流量。

有任何想法吗?

0 投票
1 回答
116 浏览

ef-core-5.0 - 在 EF Core 5 中映射 SQL 视图 - SaveChanges

我正在尝试将视图添加为实体的导航属性。

带映射:

当我查询它工作正常。但是,如果我添加一个新的计划记录。

我收到一个异常说“实体类型'ScheduleDetails'未映射到表,因此实体无法持久保存到数据库。使用'OnModelCreating'中的'ToTable'来映射它。”

无论如何让EF忽略保存这个“实体”?

0 投票
0 回答
176 浏览

c# - EF Core 5 是否引入了新的 QueryRootExpression 概念?

合并到 EF Core 5 时,我的查询停止工作,在调查时我注意到底层表达式返回类型已更改。我曾经得到这样的表达式返回类型:

现在我得到:

它打破了我的查询

System.ArgumentException:必须是 System.Linq.Expressions.Expression.ReduceAndCheck() 处的可简化节点

这是一个真正的变化还是我错过了什么?