gpt4 book ai didi

sql-server - EF Core (< 5.0) HasComputedColumnSql - 在插入/更新或 SQL Server/AzureSQL 上的每个查询时计算?

转载 作者:行者123 更新时间:2023-12-04 01:41:19 26 4
gpt4 key购买 nike

注意:这个问题引用了一个旧的 EF Core 问题。见 this answer与 EF Core 5 相关的讨论。
我看到有关此的相互矛盾的信息。 LearnEntityFrameworkCore.com说你可以写

.HasComputedColumnSql("GetUtcDate()");

The value of the column is generated by the database's GetUtcDate() method whenever the row is created or updated


然而,在 technet SQL Server 上计算列的文档说:

Their values are recalculated every time they are referenced in a query.

最佳答案

好问题。从 EF Core 文档中不清楚计算列的类型是什么 HasComputedColumnSql代表。可能因为它是关系扩展的一部分,因此被认为是特定于提供者的。但由于它没有配置选项,我同意应该指定行为。

SQL Server 的快速测试显示创建的列是 不是 物理存储(没有使用 PERSISTED 选项),实际上它不能因为 GetUtcDate不是确定性的。因此 LastModified第一个链接中的示例不正确 - 该列将在任何时候被读取时重新计算,因此它不能用于所需的意图,应作为普通列创建并由代码更新。

看起来 EF Core 中的预期用途是允许基于其他列(如 FullName)进行简单计算。或使用数据库特定的转换功能,数据没有正确存储(例如存储为文本的数字/日期时间数据)等。

关于sql-server - EF Core (< 5.0) HasComputedColumnSql - 在插入/更新或 SQL Server/AzureSQL 上的每个查询时计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com