2013-10-24 5 views
1

У меня есть следующие методы на Entity Framework родового Repository:Как сделать методы репозитория Async?

public void Add<T>(T entity) where T : class { 
    _context.Set<T>().Add(entity); 
} // Add 

public void Add<T>(Expression<Func<T, Boolean>> criteria) where T : class { 
    _context.Set<T>().AddRange(_context.Set<T>().Where(criteria)); 
} // Add 

public IQueryable<T> Find<T>(Expression<Func<T, Boolean>> criteria) where T : class { 
    return _context.Set<T>().Where(criteria); 
} // Find 

Как я могу сделать эти методы асинхр?

Спасибо, Miguel

+0

Вам это действительно нужно? Первый и третий методы настолько легкие, что вы действительно не видите разницы при работе асинхронно. Даже второй не выполняется для получения чего-либо (помните о характере ** Различного исполнения ** DBSet .) – Alireza

+0

См. Http://msdn.microsoft.com/en-us/data/jj819165.aspx, it показывает все о запросе и сохранении асинхронно. –

ответ

2

Я действительно не думаю, что вы должны заставить ваше хранилище быть асинхронными. Вместо этого вы должны сделать асинхронную бизнес-логику, которая в конечном итоге будет ссылаться на ваши репозитории и обращаться к ним по мере необходимости. Ваш доступ к данным не должен знать ничего о том, как он будет использоваться где-то в другом месте.

+0

На самом деле у меня есть диспетчер, который отправляет запросы, обрабатываемые обработчиками. Но если я сделаю мои обработчики async, мне не нужно сделать мой асинхронный репозиторий, поскольку он использует EF6? Я имею в виду, что происходит внутри обработчика не должно быть async? –

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