Могу ли я заставить мои объекты 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), Status (int), Data (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});
Однако я получаю ошибку компиляции:
Невозможно неявно преобразовать тип 'AnonymousType # 1' в 'Entities.BatchRequest'