问题标签 [ef-core-2.2]
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.
entity-framework - EF Core 在保存附加实体时抛出 DbUpdateConcurrencyException
我想更新实体的某些列而不将整个实体加载到内存中。基于SO post我正在尝试实现我的逻辑。建议的答案是使用 EF 4.1,但我假设同样适用于 EF Core。(我正在使用 EF Core)
表中有更多列,但为简洁起见,此处仅显示少数列
更新某些列的代码
但是保存更改会引发异常:
Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:数据库操作预计会影响 1 行,但实际上影响了 0 行。自加载实体以来,数据可能已被修改或删除
LearningDocument
是一个实体。我将结果投影到LearningDocument
仅选择所需列的新实例中,可以吗?
c# - Sql Server 使用 Scaffold-DbContext,得到错误:方法或操作未实现
从我的项目:
netcoreapp2.2
所有运行时;建造; 本国的; 内容文件;分析仪
我使用 Scaffold-DbContext 几个月了,今天对我的项目没有任何改变,但出现类似“EF Core 工具版本较旧......”的错误。我发现有人建议更新Microsoft.NETCore.App
到 2.2.x,我这样做了,然后得到新的错误:
该方法或操作未实现。
我发现了一个问题Scaffold-DbContext "The method or operation is not implemented",好像是我问的,但他没有解释清楚如何解决问题。
linq - EFCore 2.2 GroupBy Sum 和 DateDiff
我正在尝试将以下 SQL 转换为 EF Core 查询,并且收到警告说 GroupBy 和 Sum 将在本地进行评估。无论如何,目前有没有写这个它将完全转换为 SQL 的?
这些是我使用的 EF 查询:
c# - EF Core 2.2 中的基类问题
我有很多类如下所示:
并从 Db 上下文类中调用它:
当我迁移时,它工作正常,结果如下:
到目前为止,一切都很好。
现在我尝试将 Id、CreatedAt 和 UpdatedAt 包装在基类中,这样我就可以将它与我的所有其他模型配置类一起使用。所以我所做的就是遵循Ivan Stoev 回答的这个例子。
所以对于我的基类,我做了以下
然后我扩展了我的模型配置类:
现在当我运行迁移它生成以下
正如我们所看到的,defaultValueSql: "NEWID()"
,defaultValueSql: "getutcdate()"
只是在Id
,CreatedAt
和中丢失了UpdatedAt
。
我正在使用 Core 2.2 和 EF core 2.2。
我的问题很简单:
我做错了什么,如何解决?
c# - 什么会导致 DbSet 中的持久实体被分离?
我正在使用 Entity Framework Core 来检索已经存储在数据库中的实体,但根据我的操作方式,有时即使我根本不使用它们,它们也会在“分离”状态下被检索到AsNoTracking
。
这些是用于对数据库建模的类:
以下是用于重现实体在分离状态下检索的场景的类:
然后主程序执行以下操作:
假设表中有三行Thing
,输出变为如下:
换句话说,如果检索到实体,则将其分离,然后将其传递给Wrapper
构造函数,但如果只是定期检索,则会被跟踪(处于“未更改”状态)。
据我了解,除非使用 明确检索,否则应始终以跟踪状态检索已持久化到数据库的实体AsNoTracking
,那么是什么导致了这种行为差异?以及如何修复以确保始终跟踪实体?
几点注意事项:
- 该类
Wrapper
在这里显然毫无意义,但它是在我的实际程序中导致相同行为的更有意义的构造的最小示例。 - 翻转
foreach
循环的顺序(以便带有包装器的循环最后运行)导致实体在两个循环中都被跟踪,因此在这种情况下,第一个循环显然对第二个循环有副作用。 - 扩展第一个
foreach
循环以迭代context.Thing.ToArray().Select(a => new Wrapper(a))
(ToArray
添加)给出了预期的结果(跟踪的实体),所以这似乎与迭代的方法有关 - 但是如何?
.net-core - 如何避免 EF Core 中的客户端计算
据我了解,当无法将某些操作转换为原始 sql 命令/tsql 时,EF Core 将在本地运行它们。我们如何禁用此功能?
spatialite - EF Core 空间数据距离
使用带有 Sqlite 的 ef core 2.2 空间数据。当尝试执行返回 {x} 半径中所有已知位置的查询时,输入需要度数而不是米数。
我想如果查询是在服务器端,它会以米为单位返回吗?我猜 Sqlite 只是不被视为服务器。我可以使用 spatialite_gui 在查询中确认相同的结果
那么这是一个限制吗?如果是这样,以米为单位查找位置的最佳方法是什么?
编辑
我能够通过 RAW SQL 查询完成我想要的。首先我使用了函数“PtDistWithin”,然后我按距离进行了排序。使用距离函数,我必须将其转换为另一个 SRID。
希望我能够通过 Linq 进行查询,但这也可以。
c# - 在 Orderby 中使用 Max()
我有这条线一直运行到我启用 RelationalEventId.QueryClientEvaluationWarning。
在这里,让我们说我想做的是根据他们的最新订单日期对结果(客户)进行排序。
在我如下配置上下文后,我意识到 Max() 没有转换为 TSql。
错误:
我假设在本地计算最大值不利于获得更好的性能。有没有办法计算 SQL Server 上的最大值?
npgsql - 在 EF Core 运行时根据输入数据创建表
我有几十个表格定义和文本形式的数据。表定义也可能不时更改。
我想在运行时根据这些定义创建 EF Core 表,并从这些文件中填充它们。
如果可能的话,迁移也很好。
这可能吗?
或者:是否可以从 DatabaseContext 中 SQL“创建表 xyz”?
或者我应该更好地使用普通(Npg)sqlCommands 来创建、插入和更新?
我正在使用 Npgsql 顺便说一句。
ef-code-first - Entity Framework Core - 使用现有数据库的第一次迁移
我使用现有数据库开始了一个项目,并希望使用该code first
方法来进行未来的更改。
首先,我使用the scaffold method
.
现在我想更改为代码优先方法并初始化the migrations
.
但是当我执行初始迁移时,所有现有表都会添加到迁移中。如何从迁移中排除现有表。从现状迁移开始?
在 ef 中应该可以使用-IgnoreChanges
,但似乎无法使用ef core
(请参阅此处)。有没有比注释掉迁移的 up 方法更好的解决方法?
非常感谢