Я только начинаю с LINQ to Entities и пытаюсь повторить поиск, который мы сейчас выполняем в хранимой процедуре, как запрос LINQ to Entities. Тем не менее, я не могу понять, как правильно запрашивать свойства объектов более чем на одно «соединение» от начальной точки моего запроса.
Например, скажем, у меня есть таблицы Campaign, CampaignLocation и Location, в которых есть внешние ключи от Campaign до CampaignLocation и CampaignLocation to Location. Довольно стандартная конфигурация таблицы «многие ко многим». Когда я начинаю писать свой запрос LINQ, как это:
var campaigns = from c in context.Campaign.CampaignLocation
это настолько далеко в цепочке ассоциаций, насколько я могу. Похоже, что в «CampaignLocation» нет свойства «Location», чтобы я мог фильтровать свойства Location.
Я пытался использовать синтаксис соединения LINQ следующим образом:
var campaigns = from c in context.Campaign
join cl in context.CampaignLocation
on c.CampaignID equals cl.CampaignID
Но в псевдониме "cl", похоже, нет свойства "CampaignID". Что действительно странно, на столе есть колонка с таким названием. Разве это не на объекте модели, поскольку это внешний ключ к таблице Campaign?
Где я здесь ошибаюсь и что мне не хватает?
[UPDATE]
Похоже, что любые целочисленные столбцы, которые я использую для внешних ключей, не добавляются в качестве свойств объектов модели. Отношения внешнего ключа отображаются, но свойства идентификатора отсутствуют. Есть ли способ заставить дизайнера добавить эти свойства в модель, когда я читаю схему из базы данных?