我想知道是否有人有一个干净的方法来处理使用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();
}
谢谢。
答案 0 :(得分: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);
}
2013年7月27日由 balexandre 添加
使用FluentMongo,有一个属性可以检索对高级查询有用的MongoCollection<T>
,例如,如果我们要删除集合中的所有文档,我们会写如下:
public void DeleteAll() {
var collection = myRepository.Collection;
collection.RemoveAll();
}
如果您要返回确认所有文档确实已删除的确认,请使用Ok
属性
public bool DeleteAll() {
var collection = myRepository.Collection;
return collection.RemoveAll().Ok;
}