В linq to sql как включить дочернюю сущность с начальным запросом? - PullRequest
6 голосов
/ 26 апреля 2011

Я хотел бы иметь возможность включить дочернюю сущность с главной сущностью в мой запрос linq to sql.

Public Function GetEmployees() As IEnumerable(Of Employee)
    Dim dc As New MyDataContext()
    Return From e In dc.Employee
End Function

На моей странице ASPX я хочу отобразить отдел каждого сотрудника, при этом ему не нужно возвращаться и запрашивать базу данных каждый раз, когда для каждого сотрудника требуется название отдела из подразделения отдела.

<asp:repeater...>
   ...
      <%# Eval("FirstName") %><br />
      <%# Eval("LastName") %><br />
      <%# Eval("Department.Name") %> <--- re-queries db every time on this line?
   ...
</asp:repeater>

если я изменил его, чтобы включить отдел, я получаю ошибку:

Public Function GetEmployees() As IEnumerable(Of Employee)
    Dim dc As New MyDataContext()
    Return From e In dc.Employee Select e, e.department
End Function


Unable to cast object of type 'System.Data.Linq.DataQuery`1[VB$AnonymousType_0`2[MyNameSpace.Employee,System.Data.Linq.EntitySet`1[MyNameSpace.Employee.Department]]]' to type 'System.Collections.Generic.IEnumerable`1[MyNameSpace.Employee]'.

1 Ответ

14 голосов
/ 26 апреля 2011

Для LINQ to SQL вы можете изменить DataloadOptions (пример кода на C #):

var dlo = new DataLoadOptions();
dlo.LoadWith<Employee>(p => p.department);
dc.LoadOptions = dlo;

(Include() поддерживается только для Linq to Entities)

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