我正在使用C#驱动程序2.0.我有一个POCO,我存储在mongo中,看起来像这样:public class TestObject{[BsonId]public Guid Id { get; set; }public string Property1 { get; set; }}我使用这样的通用方法存储对象:pub...
                
我正在使用C#驱动程序2.0.我有一个POCO,我存储在mongo中,看起来像这样:
public class TestObject
{
     [BsonId]
     public Guid Id { get; set; }
     public string Property1 { get; set; }
}
我使用这样的通用方法存储对象:
public async void Insert<T>(T item)
{
        var collection = GetCollection<T>();
        await collection.InsertOneAsync(item);
}
我想有一个类似的方法来更新对象.但是,ReplaceOneAsync方法需要指定过滤器.
我想简单地根据[BsonId]属性更新同一个对象.任何人都知道这是否可能?
解决方法:
我完全同意@ i3arnon,下一步是典型的解决方案:
您的模型的界面:
public interface IEntity
{
    string Id { get; set; }
}
在基础存储库中保存方法
public async Task SaveAsyn<T>(T entity) where T : IEntity
{
    var collection = GetCollection<T>();
    if (entity.Id == null)
    {
        await collection.InsertOneAsync(entity);
    }
    else
    {
        await collection.ReplaceOneAsync(x => x.Id == entity.Id, entity);
    }
}
而且关于ID,您可以继续使用ID作为Guid,但更强大和更简单的解决方案是使用字符串(explanation about Id).
				 沃梦达教程
				
			本文标题为:如何在不使用C#驱动程序指定过滤器的情况下替换mongodb中的对象?
				
        
 
            
        
             猜你喜欢
        
	     - C#实现优先队列和堆排序 2023-05-31
 - C#在PDF中绘制不同风格类型的文本方法实例 2022-12-26
 - ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识) 2023-09-27
 - C# WinForm遍历窗体控件的3种方法 2023-04-10
 - C#11新特性预览及使用介绍 2023-06-08
 - C# 微信支付 wx.chooseWXPay 签名错误的解决方法 2022-12-01
 - c# 使用WebRequest实现多文件上传 2023-04-09
 - C# windows语音识别与朗读实例 2023-04-27
 - C# AutoMapper 使用方法总结 2023-02-25
 - c# – 在文本文件Windows Phone 8.1上读取和写入 2023-09-18
 
						
						
						
						
						
				
				
				
				