c# - 使用 NoRM 和其他工具更新数值类型会更改 MongoDb 上的数值类型元数据

标签 c# orm mongodb

我们使用 NoRM C# 驱动程序将我们的域类存储在 mongodb 上。我们面临的问题是关于这个数据库的外部更新。当尝试使用外部工具(例如 mongo shell 或 MongoVUE)更新最初使用 NoRM 创建的现有域实体时,数值存储为不同的数字类型。即:包含 Int32 字段值的域实体更新为 integer64 (MongoVUE) 或 float64 (mongo Shell)。

原始 C# 实体:

Class Person
{
    public string Name {get; set;}
    public int Age {get; set;}
}

使用 NoRM 创建的原始实体:

{ Name: 'John Smith', Age: 16 }  // On MongoVUE Age field is shown as Int32

使用 MongoVUE 更新实体:

db.Test.update({Age:16}, {$set:{Age:22}})

{ Name: 'John Smith', Age: 22 }  // On MongoVUE Age field is shown as Int16

使用 Mongo Shell 更新实体:

db.Test.update({Age:22}, {$set:{Age:32}})

{ Name: 'John Smith', Age: 32 }  // On MongoVUE Age field is shown as Float64

当我们尝试根据用于执行更新的工具使用 NoRM 检索更新的实体时,NoRM 无法检索实体。

因此我们需要以某种方式在更新查询中指定数字类型元数据,但我们找不到这样做的方法。

最佳答案

我们试验了同样的问题。由于这个和许多其他烦人的事情考虑使用 10gen 驱动程序(在这些 NoRM 驱动程序中被逐步淘汰)

http://groups.google.com/group/norm-mongodb/browse_thread/thread/2e44f73b2beaa984

关于c# - 使用 NoRM 和其他工具更新数值类型会更改 MongoDb 上的数值类型元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4758404/

相关文章:

c# - linq 按类类型过滤

python - 将 Python 对象存储在数据库中以便于查询

java - 具有相同 PrimaryKey 和foreignKey 的 OneToOne

mongodb - 失败 : no intent for collection in archive

javascript - 如何在客户端 nodejs 处理异步请求?

c# - 向网络服务添加参数是否有害?

c# - 以编程方式最小化 UWP

mysql - 如果使用 SqlAlchemy 在 ORM 级别模拟它们,是否需要数据库中的 FK?

javascript - 填充有限数量的文档

c# - 使用c#提取pdf中的条形码