Entity Framework и (от 1 до многих) - (от многих до 1) (1 - * * - 1) отношений - PullRequest
1 голос
/ 12 июня 2011

Некоторое время у меня возникают проблемы с выяснением того, как брать данные из таблицы данных (MSSQL 2008).Проблема в этом.У вас есть 3 таблицы:

  • TABLE1 (Задания): JobID, JobName
  • TABLE2 (Worker): WorkerID, WorkerName
  • TABLE3 (Worker2Job): RowID, WorkerID, JobID

Я предполагаю, что JOB может быть сделано многими работниками, поэтому мне нужна таблица "Worker2Job".Таким образом, я могу напечатать, что JobID: 1 сделан WorkerID1 и WorkerId2 и т. Д. ...

Теперь, используя Entity Framework, я не знаю, как получить свойство "WorkerName" для первого работника (или любого другого спискарабочие).

Есть идеи ?!Спасибо заранее!

1 Ответ

1 голос
/ 12 июня 2011

Вам не нужно никаких специальных RowId в Worker2Job. Просто определите ваш Worker2Job только с двумя столбцами: WorkerId и JobId и сделайте оба этих столбца составным первичным ключом таблицы. Как только вы добавите все три таблицы в конструктор сущностей, он автоматически увидит отношение «многие ко многим» и создаст только две сущности с корректным отношением в модели. Worker объект будет иметь Jobs свойство навигации, а Job будет иметь Workers свойство навигации. Вы сможете написать запрос как:

var query = context.Jobs.Include("Worker").Where(j => j.JobId == someId);

Такой запрос загрузит работу со всеми связанными работниками, и у вас будет доступ к их именам.

...