微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不使用C#驱动程序指定过滤器的情况下替换mongodb中的对象?

我正在使用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).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐