У меня следующий необработанный запрос, выполняемый через Entity Framework через SqlQuery
вызов DbSet
:
public IEnumerable<TEntity> GetComplicatedData<TEntity>()
{
return database
.Set<TEntity>()
.SqlQuery("SELECT * FROM <Complicated Query Here>");
}
...
var count = GetComplicatedData<Item>()
.Where(f => f.OwnerID == 5)
.Count();
Это работает, но очень медленно из-за того, что SqlQuery
выполняется немедленно без применения Where
.
Есть ли способ вызвать SqlQuery
таким образом, чтобы Where
был применен на стороне сервера?
По сути, я хочу, чтобы Entity Framework генерировал запрос хранилища, например:
SELECT
<Columns>
FROM
(
SELECT * FROM <Complicated Query Here>
) a
WHERE a.OwnerID = 5
Или, есть ли способ перевести мое выражение where в запрос, который я могу добавить вручную (a.k.a, без написания запроса SQL вручную, предложение where не всегда так просто)?