【发布时间】:2013-09-14 05:02:55
【问题描述】:
我不明白为什么我在保存时收到重复键异常。我认为保存的目的是如果有就更新,如果没有就插入。这是错误。
WriteConcern 检测到错误“E11000 重复键错误索引:cms.BaseVariables.$id dup key: { : "8f69cb40ab3568957c237ef360d29964" }”。 (响应为 {“err”:“E11000 重复键错误索引:cms.BaseVariables.$id dup key:{:\“8f69cb40ab3568957c237ef360d29964\”}”,“代码”:11000,“n” : 0, "connectionId" : 6969, "ok" : 1.0 })。
是的,没错,8f69cb40ab3568957c237ef360d29964 已经存在。那么为什么不只是更新呢?
我在对象上有以下类映射注册和 ID 属性...
BsonClassMap.RegisterClassMap<BaseVariableGroup>(cm =>
{
cm.AutoMap();
cm.SetIdMember(cm.GetMemberMap(c => c.Id));
cm.IdMemberMap.SetIdGenerator(StringObjectIdGenerator.Instance);
});
public string Id
{
get { return _id; }
set
{
_id = value;
_id = Md5Cryptography.Hash(string.Concat(SportId, CompetitionId, Round));
}
}
这就是我如何调用 Save...
_collection.Save(baseVariableGroup)
例外...
【问题讨论】:
-
这看起来像 C# 但这是什么语言?
-
我已经更新了。你是对的。
-
我无法重现该问题。您使用的是哪个版本的驱动程序和哪个数据库版本?
-
其实我不确定这是否只是打开公共语言运行时异常时的正常行为...... DB版本2.2.3和驱动程序版本1.7.0.4714。