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によって27 7 月 2013 に追加されました

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 に答える