c# - Linq to Mongodb动态更新功能

标签 c# linq mongodb

我正在尝试使用泛型动态更新集合。我有一个可行的解决方案:

 MongoCollection symbolcollection= database.GetCollection<Symbol>("Symbols")  
var query3 = Query<Symbol>.EQ(e => e.Id, ("0000000000021325640.0");  
var update = Update<Symbol>.Set(e => e.Name, "abc"); // update modifiers  
symbolcollection.Update(query3, update); 

但我的问题是如何在不显式声明集合类型的情况下动态更新集合中的项目?

我尝试过这样的事情:

var query = Query.EQ("_id", new BsonObjectId(ObjectId.Parse(id)));
        var update = Update<TEntity>.Set(e => e, entity);
        var collection = GetCollection();
        collection.Update(query, update);

但它抛出异常:

An exception of type 'System.ArgumentNullException' occurred in MongoDB.Driver.dll but was not handled in user code

Exception Message: Value cannot be null. Parameter name: name

是否有解决方案,或者工作解决方案是实现此目标的唯一方法?

最佳答案

我最终通过构建查询,然后将其传递到 final方法进行更新来使其工作:

 var symbolToUpdate = Update<Symbol>.Set(e => e.Name, symbol.Name);
            UpdateItem(symbolToUpdate, id);

    public void UpdateItem(UpdateBuilder<TEntity> symbolToUpdate, string id)
            {
                var query = Query.EQ("_id", new BsonObjectId(ObjectId.Parse(id)));
                var collection = GetCollection();
                collection.Update(query, symbolToUpdate);
            }

关于c# - Linq to Mongodb动态更新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29294320/

相关文章:

mongodb - 使用文档验证器确保文档中仅存在某些键

c# - 将用户控件列表插入到特定的列和行

c# - 如何在 Winform 应用程序中获取 datagridview 特定单元格的值

c# - 从 PDF 文件创建图像或 PdfTemplate

c# - 是否有一种 LINQ 方法可以执行类似 foreach 的操作然后调用函数?

sql - 带有 LINQ 和 SQL 数据库的 ASP.NET MVC TDD

c# - 如何在linq to sql中检查空值

c# - 如何使用类的 Id 属性作为值将 List<T> 转换为逗号分隔的列表

python - 在python中将html页面转换为二进制格式

node.js - 在 Mongoose 中排序