2013-04-25 2 views
0

У меня есть веб-страница и сайт с использованием Linq. Страница содержит gridview, которая показывает клиентов и связана списком (Customer).Внешний ключ для значений с использованием Linq

Я использую следующий код, чтобы получить одного клиента

Public Function GetCustById(ByVal id As Integer) As Customer Implements ICustomerService.GetCustById 
     Return DataContext.Customers.SingleOrDefault(Function(c) c.Id = id) 
    End Function 

потом привязать его к моей GridView, передавая все идентификаторы клиентов в метод. Это отображает все строки по мере необходимости, но у меня одна проблема.

Некоторые столбцы, которые являются внешними ключами, отображаются как 1,2 и т. Д. Как правило, я преодолел это в прошлом. В РАЗЛИЧНЫХ ПРОЕКТАХ добавляется дополнительный запрос к моему SQL-запросу в слое данных, но поскольку вы предположил, что это Linq, поэтому я не уверен, что это/не возможно, чтобы заставить внешние ключи отображаться как значения с помощью Linq?

Im немного новый для Linq, так что оцените любую помощь или статьи, которые помогут мне в этом.

Благодаря

+0

Ваш вопрос непонятен. –

+0

Linq способен подключаться, использовать их для подключения двух таблиц. – jAC

+0

Erm .... получить внешние ключи для отображения в виде значений с помощью Linq? Поэтому им интересно, есть ли способ заставить приведенный выше код включать значение внешнего ключа (как это можно было бы сделать при написании вспомогательного запроса в таблице) – Computer

ответ

1

Рекомендуется отделить вид из классов сущностей (или классов домена, если вы хотите). Таким образом, вы определите класс модели представления, скажем CustomerViewModel, и спроектируйте свой Customer.

Я не уверен, как вы получаете список клиентов (получение каждого отдельного клиента по ID очень неэффективно), но где-то будет IEnumerable<Customer>. Назовем это customers. Теперь вы можете сделать

From c in customers_ 
Select New CustomerViewModel With { Name = c.Name, ... } 

Но теперь вы можете добавить свойства CustomerViewModel, которые не в Customer! Например

Select New CustomerViewModel 
     With { Name = c.Name, TypeName = c.CustomerType.Name } 

Это CustomerType может быть один из этих внешних ключей, которые вы хотите показать.

Результат проекции IEnumerable<CustomerViewModel>, который вы можете показать в таблице.

Смежные вопросы