Refactoring Remove method in MongoDb Repository
public void RemoveById(Guid id) { _collection.Remove(Query.EQ("_id", id)); }
_repository.RemoveById(id);
Grownup Repository class with RemoveSomething() methods
Depends on string constants ("_id")
public void RemoveByQuery(IMongoQuery query) { _collection.Remove(query); }
_repository.RemoveByQuery(Query.EQ("_id", id));
Business logic depends on MongoDb Driver Queries (Query.EQ("_id", id))
Depends on string constants ("_id")
public void Remove<TValue>(Expression<Func<TEntity, TValue>> expression, TValue value) { _collection.Remove(Query<TEntity>.EQ(expression, value)); }
_repository.Remove(x => x.Id, id);
Only eqaul condition (Query.EQ)
Can use a lambda expression instead of string constants
public void Remove(Expression<Func<TEntity, bool>> whereExpression) { _collection.Remove(Query<TEntity>.Where(whereExpression)); }
_repository.Remove(x => x.Id == id);
Can use a lambda expression instead of string constants
Can use any lambda expression (x => x.Id == id)