Могу ли я заставить объекты EF извлекать только определенные столбцы в выполненном sql? Если я выполняю приведенный ниже код для извлечения объектов, есть ли что-то, что я могу сделать, чтобы получить только определенные столбцы, если они захотят?Только получить конкретные столбцы
public IEnumerable<T> GetBy(Expression<Func<T, bool>> exp)
{
return _ctx.CreateQuery<T>(typeof(T).Name).Where<T>(exp);
}
Это создало бы предложение select, содержащее все столбцы. Но если у меня есть столбец, содержащий большой объем данных, который действительно замедляет запрос, как я могу заставить мои объекты исключать этот столбец из сгенерированного sql?
Если моя таблица Id (INT), состояние (целое), данные (BLOB), как я могу сделать мой запрос будет
select Id, Status from TableName
вместо
select Id, Status, Data from TableName
С ниже предложений мой метод
public IEnumerable<T> GetBy(Expression<Func<T, bool>> exp, Expression<Func<T, T>> columns)
{
return Table.Where<T>(exp).Select<T, T>(columns);
}
И я звоню это как так
mgr.GetBy(f => f.Id < 10000, n => new {n.Id, n.Status});
Однако я получаю ошибку компиляции:
Cannot implicitly convert type 'AnonymousType#1' to 'Entities.BatchRequest'
Я хочу сделать это в общем виде, чтобы просто добавить еще один аргумент в вызов метода GetBy, который является столбцом, который должен быть возвращен. – Brian
Вам нужно передать выбранное выражение вместе с вашим выражением, то есть, например: var foo = GetBy (r => r.Id == someId, r => new {r.Id, R.Status}); –
Отредактировано мое сообщение выше с дополнительной информацией – Brian