Как указать / отфильтровать, какие столбцы таблицы следует заполнять при работе с LINQ to SQL? - PullRequest
0 голосов
/ 17 февраля 2012

Я использую LINQ to SQL и у меня есть таблица базы данных под названием Product с 20 столбцами. Таблица Product отображается в класс Product в метаданных LINQ to SQL.

Я бы хотел использовать свой dbContext и получить некоторые записи о продуктах, но только с 10 столбцами, а не с 20 столбцами.

Как можно было бы указать, какие столбцы следует возвращать / заполнять с помощью LINQ to SQL (или EF)?

Я знаю, что одним из способов было бы использование хранимых процедур, но вот о чем вопрос.

Спасибо

1 Ответ

4 голосов
/ 17 февраля 2012

Обычно для этого вы используете анонимный класс:

db.Products.Where(... filter ...).Select(item => new 
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

Будут выбраны только те поля, которые вы включите.Если вы намереваетесь передать эту структуру данных другим функциям или вернуть ее, вам нужно конкретное определение класса для набора подполей, например:

class SmallerEntity
{
    public something Field1;
    public something Field2;
}

И вы можете инициализировать это в своем операторе Select:

db.Products.Where(... filter ...).Select(item => new SmallerEntity
{
   Field1 = item.Field1,
   Field2 = item.Field2,
});

Я не рекомендую практиковать половину существующего класса.Это делает ваше пространство состояний излишне сложным и допускает больше ошибок в вашем коде.Старайтесь содержать меньшие подмножества данных в своих собственных классах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...