如何更改文档中 属性 的数据类型?
How to change data type of property in document?
我有一个实体映射文档存储在 RavenDb 中,属性 之一存储为“string”应该是“DateTime ”。在我的 C# 代码中,我已将实体 属性 更改为“DateTime”,但是从 RavenDb 中检索实体时抛出
Exception "Could not read value for property: {NameOfProperty}" due to conflict in dataType. How to resolve same?
使用 RavenDb 3.0 版
{
"Accountexpires": "11/31/9999 11:59:59 PM",
"Cn": "XYZ",
"Countrycode": "0",
"Displayname": null,
"DistinguishedName": "CN=XYZ,OU=Domain Controllers,DC=XYZ,DC=XYZ"
}
基本上在这个 "Accountexpires" 中是实体中的一个字符串,现在它是“DateTime”,所以在获取它时会出现前面提到的错误。
字符串 属性 中的值对于 DateTime 值无效,因此仅更改类型是行不通的。
考虑添加另一个 DateTime 字段并处理集合中的所有文档:加载文档,将 Accountexpires 字段解析为 DateTime 值并将其保存到新字段。然后更改您的代码以使用添加的 DateTime 字段。如果您不再需要旧字符串字段,则可以将其删除。
否则,您需要处理集合中的所有文档并将字符串更改为有效的 RavenDB DateTime 格式 (9999-11-31T23:59:59.0000000),然后更改数据类型,它应该可以工作。
后一种方式缺点是切换不是瞬时的,会有一段时间数据不一致。前一个过程允许您准备数据并立即切换代码。
我有一个实体映射文档存储在 RavenDb 中,属性 之一存储为“string”应该是“DateTime ”。在我的 C# 代码中,我已将实体 属性 更改为“DateTime”,但是从 RavenDb 中检索实体时抛出
Exception "Could not read value for property: {NameOfProperty}" due to conflict in dataType. How to resolve same?
使用 RavenDb 3.0 版
{ "Accountexpires": "11/31/9999 11:59:59 PM", "Cn": "XYZ", "Countrycode": "0", "Displayname": null, "DistinguishedName": "CN=XYZ,OU=Domain Controllers,DC=XYZ,DC=XYZ" }
基本上在这个 "Accountexpires" 中是实体中的一个字符串,现在它是“DateTime”,所以在获取它时会出现前面提到的错误。
字符串 属性 中的值对于 DateTime 值无效,因此仅更改类型是行不通的。
考虑添加另一个 DateTime 字段并处理集合中的所有文档:加载文档,将 Accountexpires 字段解析为 DateTime 值并将其保存到新字段。然后更改您的代码以使用添加的 DateTime 字段。如果您不再需要旧字符串字段,则可以将其删除。
否则,您需要处理集合中的所有文档并将字符串更改为有效的 RavenDB DateTime 格式 (9999-11-31T23:59:59.0000000),然后更改数据类型,它应该可以工作。
后一种方式缺点是切换不是瞬时的,会有一段时间数据不一致。前一个过程允许您准备数据并立即切换代码。