У нас есть таблица в базе данных, которая имеет несколько столбцов. Нам нужен только запрос, который будет возвращать только запрошенные столбцы. Эти запрошенные столбцы будут получены из запроса выбора Odata, запрашиваемого с помощью веб-API C#. Например, у меня есть таблица сотрудников, которая имеет структуру ниже в SQL.
И я вызываю приведенный ниже образец API, чтобы получить результаты. http://domain/controller/method?Select=EmployeeID,EmployeeName
Этот запрос должен получить только более 2 столбцов из базы данных; в текущем сценарии — база данных возвращает все столбцы, а конфигурации Odata в веб-API отфильтровывают ответ, прежде чем вернуть его пользователю Помогите, пожалуйста, как это реализовать в БД.
Пример с Entity Framework
Выбор столбцов "id" и "col3" из таблицы со столбцами "id", "col1", "col2", "col3".
class filtededMyTableRow
{
public long Id { get; set; }
public string col3 { get; set; }
}
// ControllerName/GetCols?colNames=Id&colNames=col3
public void GetCols(string[] colNames)
{
using (DbEntities context = new DbEntities())
{
/*
MyTable
id col1 col2 col3
1 text1 text2 text3
2 text1 text2 text3
3 text1 text2 text3
4 text1 text2 text3
5 text1 text2 text3
6 text1 text2 text3
*/
string selArg = string.Join(",", colNames);
List<filtededMyTableRow> filtededMyTable = context.Database
.SqlQuery<filtededMyTableRow>($"SELECT {selArg} FROM MyTable")
.ToList();
/*
filtededMyTable
Id col3
1 text3
2 text3
3 text3
4 text3
5 text3
6 text3
*/
}
}
Пожалуйста, укажите в вопросе конфигурацию OData и метод вашего контроллера.