2012-02-24 4 views
3

Мне было интересно, имеет ли кто-нибудь чистый способ обработки и обновления документов с использованием FluentMongo?Использование 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

Самый простой способ - обернуть стандартный 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 июля 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; 
} 
+2

Как насчет для Удалить с выражением Linq? Это реальная проблема; создавая запрос. – rboarman

Смежные вопросы