Linq to EF не выбирает внешние ключи - PullRequest
0 голосов
/ 31 марта 2011

Итак, у меня есть две таблицы, Table1 и Table2. В первой таблице есть целое число, которое является внешним ключом для столбца идентификаторов таблицы 2, я назову этот FK Table2ID. Если я выполню этот запрос:

var objs = (from t in DataContext.Table1 select t).Single();

objs.Table2.Table2ID имеет значение null. Однако я могу легко выбрать значение с помощью запроса, подобного следующему:

var Table2ID = (from t in DataContext.Table1.Table2.Table2ID).Single();

Как я могу выбрать значение FK в Таблице 1, используя первый запрос, и почему он не возвращается автоматически?

1 Ответ

1 голос
/ 31 марта 2011

Похоже, что отложенная загрузка по какой-то причине отключена, поэтому попробуйте Include - это должно работать:

var objs = (from t in DataContext.Table1.Include("Table2") select t).Single();

С какой EF-версией вы работаете? Сначала этот код или база данных?

Также, когда вы обращаетесь к связанным сущностям через свойство навигации, вы не используете FK - вы должны иметь возможность доступа к objs.Table2.Id при условии, что Id является первичным ключом Table2 сущности.

Изменить:

Звучит так, будто вы не отметили галочкой включение внешних ключей в вашу модель - обязательно добавьте ее. Если вы щелкнете правой кнопкой мыши по своей модели и выберете «Обновить модель из базы данных ...», вы получите следующий диалог.

enter image description here

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