Entity Framework делает скомпилированный запрос универсальным

Я использую структуру сущностей, и я пытаюсь сделать такой запрос универсальным, чтобы его можно было использовать для любого типа сущности (при условии, что каждая сущность имеет свойство int Id).

Я пробовал что-то вроде этого, но нет коллекции ctx.TEntity или чего-то подобного:

public class Queries<TEntity> where TEntity : AbstractEntity
{
  public Func<AdventureWorksEntities, int, TEntity> getQuery() {
   return
    CompiledQuery.Compile<AdventureWorksEntities, int, Entity>(
    (ctx, num) => ctx.TEntity.First(x => x.Id>num));
    }
}

AbstractEnitity:

public abstract class AbstractEntity {

[Key]
public int Id {get; set};
}

Спасибо за ваши идеи:)

1 ответ

Решение

Я попытался скомпилированные запросы с DbContext, но безуспешно (это не поддерживается, и обходной путь мне тоже не подошел). Вы перешли на эту ссылку: http://blogs.msdn.com/b/efdesign/archive/2011/06/30/auto-compiled-linq-queries-entity-framework-june-2011-ctp.aspx?

Вы можете увидеть эту статью: http://social.msdn.microsoft.com/Forums/en-US/0c07e1d6-7db6-4348-b106-e576d3153b70/ef-40-compiled-queries-performance?forum=adonetefx. Я не думаю, что использование скомпилированных очередей особенно важно для современных версий EF (5 и 6).

При первом запросе соединение установлено, и это может занять некоторое время.

Другие вопросы по тегам