问题标签 [rowversion]
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.
coldfusion - 将二进制值转换为字符串并返回二进制?
我有rowversion
来自数据库的二进制格式的值。我需要将该值转换为字符串才能传入我的前端代码。然后,当用户将数据提交回服务器时,我需要将该字符串转换回二进制文件。这是我的数据示例:
上面的输出是我的查询结果返回值时看到的。然后我尝试了这个:
编码值如下所示:iV
然后我尝试将值解码回来,这就是我所使用的:
然后我收到此错误消息:ByteArray objects cannot be converted to strings.
在我的数据库行版本列有timestamp
类型。当查询返回该值时,它在 ColdFusion 中表示为二进制。我将此列用作表中设置的每一行的唯一 ID。有没有办法在 CldFusion 中处理这种转换,最好的方法是什么?
c# - Entityframework ObjectContext 刷新更改的实体
我正在寻找一种刷新数据库中更改的实体的方法。我要刷新的实体具有 RowVersion [TimeStamp] 属性。我想做的是刷新我所有加载的实体,其中数据库中的 RowVersion 比我加载的实体更大(更年轻)。
这是我的实体类:
}
到目前为止,我使用此代码刷新我的实体:
现在每个实体都被刷新,如果有很多实体,这可能会导致性能问题。因此我认为只刷新rowversion不同的实体会更好。我怎样才能做到这一点?
mysql - MariaDB 使用 PHP PDO 存储与原始字段不同的值的 varbinary 字段
我正在使用 PHP - PDO 使用 RowVersion 将 SQL Server 表从我们的 ERP 同步到 MariaDB 数据库(托管)。
当我将值保存在本地(办公室)MariaDB 数据库版本 5.5.56 中时,一切正常并且数据存储正确。当我使用 MariaDB 版本 10.0.37 将数据存储在我们的主机中时,rowversion 字段会保存一个不同的值。
我尝试使用 PHP PDO 在办公室 MariaDb 和远程 MariaDb 之间复制数据,而不是从 SQL Server 复制数据,但我遇到了同样的问题。原始 rowversion 值与远程 rowversion 值不同。
为了存储 rowversion 字段,我使用了 VARBINARY(8)。
例子:
ERP SQL SERVER ROW:(id、description、rowversion)。值:1,AMARILLO,0x00000000025DB362 ERP ROW
MariaDb 本地数据库:存储值 1,AMARILLO,00000000025db362 本地 MariaDb 行
MariaDb 远程数据库:存储值:1,AMARILLO,00000000025d3f62 MariaDb 远程行
我不明白为什么远程 MariaDb 会保存不同的值。两个 mariadb 表是相同的,但一个存储一个值,另一个存储不同的值。有任何想法吗?会不会是数据库版本问题?
PHP TEST 代码,在本例中是从本地 MariaDb 到远程 MariaDb:
桌子:
更新和解决:
阅读这篇文章PHP/PDO/MySQL: inserting into MEDIUMBLOB stores bad data我已经测试过更改远程数据库中的 SET NAMES 后。这解决了问题。
我将此行添加到我的 PHP 程序中:
现在的问题是为什么数据库(MariaDB)以一种方式工作,而另一种方式则以另一种方式工作。
Sqlserver 正在使用 Modern_Spanish_CI_AS 排序规则。
本地 mariadb 正在使用 utf8mb4_unicode_ci,我在 PDO utf8 中设置
远程 mariadb 在 utf8mb4_general_ci 中,我也在为 utf8 设置 PDO。
使用这些排序规则,来自 SqlServer 的数据以不同的方式存储。设置新的排序规则解决了它。如果 PDO 可以使用二进制数据而不需要任何与校对相关的解释,那就更好了。
第二次更新
我找到了一个更好的方法来做到这一点:
我使用 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 创建表
我将 PDO 中的 CHARSET 更改为:
$this->Db->remotedb->exec("SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci");
有了这个,rowversion 和语言特定的字符被正确存储。
干杯。
c# - Linq 可枚举中的字节 [] 比较
我正在尝试检索 rowversion 大于某个值的 SQL 记录。在 SQL 中,这是微不足道的(WHERE RowVersion > x),但在动态 Linq 查询中并非如此。
在我的 EF 模型中,我已将时间戳注释应用于相应的列。
并使用静态比较扩展进行 byte[] 比较(来源:(https://stackoverflow.com/a/42502969/3424480)
我尝试了以下样式的动态 Linq 表达式,但没有成功(maxRV 是一个小字节序字节 [])。
这会引发“不存在适用的聚合方法 'Compare'”,经过一些研究,我认为这是因为 'Compare' 不是有效的可枚举方法。任何关于我可能出错/替代方法的指示都表示赞赏。
c# - C#乐观并发无响应
我正在尝试按照本教程将乐观并发添加到我的应用程序中。
不幸的是,该应用程序就像我没有改变任何东西一样工作。我打开两个浏览器,在两个浏览器中都编辑同一行,覆盖相同的值并将其放在第一个,而另一个根本没有响应。我将保存第二个,但仍然没有警告。我试图逐步完成它,并使用编辑按钮并在保存时RowVersion
改变了我。只有SaveChanges()
不抛出异常。
SQL 服务器:
模型:
控制器:
java - 如何映射 row_version 列?
我必须在休眠中映射一个row_version
列,我有一个 SQL Server 数据库,并且我的表在 DB 上有一个 row_version 列,该列被声明为timestamp
因为对于 SQL Server,arowversion
是一个特殊的时间戳。如何在休眠中映射此列?
我试图将此列映射Timestamp
为二进制,但它不起作用。
c# - SqlLite 中正确的 RowVersion 模拟,并在 Entity Framework Core 上转换为 ulong
我试图通过对 rowversion 列的简单查询使 RowVersion 在 SqlLite 和 SqlServer 上正常工作。为了能够做到这一点,我需要将 rowversion 列转换为 ulong 而不是 byte[] 并且仍然让它正常工作。
在我的第一个添加迁移中,将 RowVersion 更改为具有 rowVersion: true (没有自动添加)。还添加了
这样它是用触发器创建的,以模拟 SqlServer RowVersion 增量全局值。
迁移工作,首先保存工作
并发错误:数据库操作预计会影响 1 行,但实际上影响了 0 行。自加载实体以来,数据可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=527962。
我不明白为什么这应该是一个问题。任何人都知道为什么这不起作用?获取的实体似乎在 RowVersion 属性上有一个值。但是当它被保存时,它认为它已经改变了。
database - 谁应该更新 EF Core 中的并发令牌?
谁应该更新 EF Core 中的并发令牌?
我正在通过这里的教程学习 EF Core 。我遇到了并发令牌的概念。
虽然很清楚,当插入或更新发生时,数据库会更新行版本的值,但不清楚何时以及由谁更改并发值。
我的假设是并发令牌需要数据库客户端的自定义解决方案(并发令牌应该在每次插入或更新之前手动更新)。这是一个正确的假设还是我错过了什么?
sql - 向表中添加 rowversion 列并对现有数据进行排序
我想在我的数据库中的现有表中添加一个 rowversion 列,这样我基本上可以在最后一次成功修改每条记录时进行排序。我的问题是,添加 rowversion 将如何影响我现有的数据?是否会在这些记录上随机分配 rowversion 值,或者最后一次修改它们?(即使它们在列之前存在)
sql-server - 用于行数据的 SQLite 逻辑时钟,例如 SQL Server 中的 rowversion
SQLite 是否有类似 SQL Server 的rowversion 列,每次行更改时都会增加?本质上,我希望每个表都有一个逻辑时钟,每当表更新时都会更新。有了这个逻辑时钟,我的应用程序可以保存它最近看到的版本,并且只有在数据发生变化时才能重新获取。
我可以用类似的东西来实现它:
但这似乎本来就应该存在。