3

我想知道是否有人有一种干净的方法来使用 FluentMongo 处理删除和更新文档?

我正在使用 FluentMongo 创建一个存储库层;但是,无法删除或更新文档被证明是很麻烦的。也许我错过了在保持适当的存储库模式的同时处理这个问题的方法?

public interface IRepository : IDisposable
{
    IQueryable<T> All<T>() where T : class, new();

    void Delete<T>(Expression<Func<T, bool>> expression)
        where T : class, new();

    void Update<TEntity>(TEntity entity) where TEntity : class, new();
}

谢谢你。

4

1 回答 1

0

最简单的方法是将标准 MongoCollection 包装在您的存储库方法后面。由于您的存储库是类型化的,您只需创建一个类型化的集合并从该集合中删除文档。这是一个示例实现。

 MongoCollection<T> collection = mongoserver.GetCollection<T>();

 public void Delete(string id)
 {   
      this.collection.Remove(Query.EQ("_id", id));
 }

 public void Delete(T entity)
 {
     this.Delete(entity.Id);
 }

balexandre于 2013 年 7 月 27 日添加

使用FluentMongo,有一个属性可以检索MongoCollection<T>对高级查询有用的 ,例如,如果我们想删除集合中的所有文档,我们会这样写:

public void DeleteAll() {
    var collection = myRepository.Collection;
    collection.RemoveAll();
}

如果您想返回确认所有文档确实已被删除,请使用该Ok属性

public bool DeleteAll() {
    var collection = myRepository.Collection;
    return collection.RemoveAll().Ok;
}
于 2012-03-05T01:50:30.237 回答