Asp .Net LINQ to SQL Привязка данных, сделать поиск без таблицы поиска? - PullRequest
2 голосов
/ 25 января 2011

Скажем, у меня есть таблица сотрудников.Каждый сотрудник имеет уникальный идентификатор.Одним из столбцов в таблице является ManagerId, который соответствует другому сотруднику.При связывании данных Сотрудника с GridView я хочу отобразить имя менеджера, а не его идентификатор.Если бы у меня была таблица поиска для Менеджеров, я мог бы просто сделать <%# Eval("lu_Managers.ManagerName") %>, но у меня нет такой таблицы, и при этом я не хочу создавать ее / отслеживать ее / обновлять каждый раз, когда новый менеджер добавляется или удаляется.

В настоящее время в OnRowDataBound я вызываю e.Row.Cells[1].Text = getFullNameFromEmployeeId(Convert.ToInt32(e.Row.Cells[1].Text));, что мне кажется довольно грязным.

Есть ли способ сделать это без использования кода позади?Или это будет менее эффективно, чем то, что у меня сейчас?

Ответы [ 2 ]

1 голос
/ 26 января 2011

Вам необходимо снова присоединиться к таблице Employee для менеджера

SELECT 
  Employee.*,
  Manager.FirstName As ManagerName
FROM
  tblEmployee As Employee
  JOIN tblEmployee As Manager
    ON Employee.ManagerID = Manager.pkEmployeeID 

EDIT: Который можно легко перевести на LINQ:

var q = 
 from employee in db.tblEmployee
 join manager in db.tblEmployee
   on employee.ManagerID equals manager.pkEmployeeID
 select new
 {
   Employee = employee,
   ManagerName = manager.FirstName
 };
0 голосов
/ 25 января 2011

ОК, если есть установка одинарного отношения?В случае отношения Employee будет иметь свойство Employee, которое указывает на этого менеджера, поэтому вы можете ссылаться с Employee.EmployeeName.В противном случае, если нет явного свойства навигации, вам придется использовать запрос из выделенного кода.

HTH.

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