我正在使用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# – 内存泄漏处理Xamarin.Forms 2023-09-19
- 详解c# 多态 2023-03-09
- c#抽签系统的实现示例 2023-05-06
- WPF实现雷达图(仿英雄联盟)的示例代码 2023-06-27
- C#中逆变的实际应用场景详解 2023-05-16
- 详解C# FileStream类 2023-03-03
- c# – 如何在metro应用程序中序列化Windows.Storage.StorageFile 2023-09-20
- C#字体池技术实现代码详解 2023-02-03
- C#中读写INI配置文件的方法 2022-12-26
- Unity Shader实现2D游戏迷雾 2023-02-16