问题标签 [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.
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 中问的问题
c# - EF Core 过滤包含:“包含中使用的 Lambda 表达式无效”
我正在尝试使用带有 EF Core 5.0.0 的新“过滤包含”功能来使用一个非常基本的功能,
https://docs.microsoft.com/en-us/ef/core/querying/related-data
但我遇到了一个问题。它给出了以下错误:
这是导致它的代码片段。根据文档,我相信我的逻辑是正确的。我不确定为什么会这样。有什么我想念的吗?
供应商是项目的父项。这是一个非常基本的设置。一对(供应商)对多(项目)关系。
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 时性能会提高吗?
entity-framework - 将 Blazor 服务器中的 EF Core 5.0 查询记录到控制台
将 EF 核心 5.0 查询记录到 Blazor 服务器 .NET 5 控制台的最佳方法是什么?
我想知道为什么没有关于这个主题的任何线程。
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 名称错误。
c# - 按可空导航属性的属性分组时如何传播导航属性的空值
假设我们在 EfCore 中有这些实体......
...我们希望得到相同的平均值 Rate
。Entities
AnotherNavigationProperty
我尝试的 efcore 查询抛出“System.InvalidOperationException:Nullable 对象必须有一个值”。
我知道 EfCoreToQueryString()
在查询返回时已成功翻译
在数据库上运行时正确返回我需要的结果
如何提示 EfCore 传播 null 导航属性?(因为表达式树不能包含空传播?.
运算符)
asp.net-core - EF Core 5.0 RC1 表架构
我刚刚将我的 Blazor 演示项目升级到 EF Core 5.0 RC1,以便利用它提供的新的多对多功能。完成升级后,我运行了我的单元测试,它们都失败并出现相同的错误:“无效的对象名称”
经过一番调查,我确定该查询不再包括查询中的表模式。由于我的所有表都属于 dbo 以外的模式,因此我的所有查询都不起作用。我试图弄清楚如何让 ef core 5.0 使用表模式,但我没有任何运气。
我正在使用 Table 属性在模型上指定模式,如下所示。
我在升级后执行了迁移并编写了脚本,并且所有表都有正确的架构,所以很明显 ef 能够看到架构,但由于某种原因,它离开了查询。
感谢您提供的任何帮助。
c# - 带有子选择的EF Core 5.0 Union Linq查询不起作用
目标:
我想将来自具有不同属性的两个表(实体A 和实体B)的信息组合到一个unionDto。我正在尝试通过联合操作来实现这一点,以同时过滤数据库中的不同实体。
但是我使用的结构需要在联合查询之前需要过滤的版本。
一些附加信息:
所以我在最后一个查询中要做的是:首先我将表“entityA”和“entityB”中的信息投影到通用“匿名”类型(带有联合)。然后我尝试应用分页,然后我尝试将新的匿名结果“投影”到UnionDto。因此,这将导致一个 UnionDto 具有“来自 2 个不同表的信息”。
我用两个具有版本的实体创建了一个问题示例:
实体:
我正在设置这样的查询:
执行查询:
似乎我无法在联合查询中使用子选择,并且出现以下错误:
设置操作:在投影中的客户端评估后放置时支持 #16243
我不知道,我必须做些什么来解决这个问题,因为我真的不想通过单独的数据库查询来处理我的所有实体。
当前使用 Ef core 版本:5.0.100-preview
现在这只是一个例子。这将需要至少 10 个实体,如果单独为每个实体完成,这将导致高数据库流量。
有任何想法吗?
ef-core-5.0 - 在 EF Core 5 中映射 SQL 视图 - SaveChanges
我正在尝试将视图添加为实体的导航属性。
带映射:
当我查询它工作正常。但是,如果我添加一个新的计划记录。
我收到一个异常说“实体类型'ScheduleDetails'未映射到表,因此实体无法持久保存到数据库。使用'OnModelCreating'中的'ToTable'来映射它。”
无论如何让EF忽略保存这个“实体”?
c# - EF Core 5 是否引入了新的 QueryRootExpression 概念?
合并到 EF Core 5 时,我的查询停止工作,在调查时我注意到底层表达式返回类型已更改。我曾经得到这样的表达式返回类型:
现在我得到:
它打破了我的查询
System.ArgumentException:必须是 System.Linq.Expressions.Expression.ReduceAndCheck() 处的可简化节点
这是一个真正的变化还是我错过了什么?