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