Linq возвращает данные с внешним ключом - PullRequest
0 голосов
/ 22 января 2011

У меня есть простая БД с двумя таблицами employee и employeedetails.

employee имеет внешний ключ empdetailsid, который указывает на таблицу employeedetails

Мой простой запрос linq для возврата сотрудника

var employeeList = from employee in objectcontext.employees select employee;
return employeeList.ToList();

также возвращает сотрудника детали и все егоСодержит поля, которые мне не нужны.Я использую Entity Framework 4.0.Есть ли способ избежать получения всех ненужных данных.Я мог бы определить класс модели, в котором есть только поля таблицы сотрудников, и который мог бы загружаться в него, но мне было интересно, есть ли более простой способ.Я использую базу данных mysql.

Ответы [ 2 ]

2 голосов
/ 23 января 2011

Как узнать, что запрос возвращает данные о сотруднике? Вы проверили сгенерированный запрос SQL или просто попытались получить доступ к объекту EmployeeDetails и получили данные. Во втором случае EF действительно может просто лениво загружать данные по требованию (когда вы пытаетесь получить к ним доступ). В противном случае, если вы уверены, что дополнительные данные извлекаются во время выполнения исходного запроса, попробуйте неявно включить отложенную загрузку перед выполнением запроса:

objectcontext.ContextOptions.LazyLoadingEnabled = true;
1 голос
/ 22 января 2011

Я не использовал ef 4, но большинство orm склонны использовать концепцию, называемую отложенной загрузкой.Данные в соответствующих сведениях о сотруднике извлекаются только при обращении к этому объекту.когда вы смотрите на объект в вашем отладчике, данные для конкретного сотрудника будут извлечены при нажатии на объект.Чтобы получить лучшее представление о том, какие данные извлекаются, вам нужно запустить профилировщик для базы данных, чтобы перехватывать запросы SQL.Я не знаю, есть ли в mysql встроенный профилировщик, такой как sql server.Если нет, проверьте nhprof.

...