Как работает .Include ()? - PullRequest
       3

Как работает .Include ()?

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

Привет! Я создал базу данных с помощью диаграммы сущностей в Visual Studio, где я добавил свойства навигации.Я создал его с помощью этого урока http://geekswithblogs.net/danemorgridge/archive/2009/10/29/using-visual-studio-2010-beta-2-to-do-entity-framework.aspx Это выглядит так

User Table
IdUser    Name    IdAccount
1         Ron      2
2         Carl     1

Свойство навигации: Учетная запись (отношение один к одному)

Account table
IdAccount    Amount
1             50
2             30

Свойство навигации: Учетная запись (однаОбратите внимание, что user1 имеет учетную запись 2, а user2 имеет учетную запись 1

Я делаю: var user = infoDB.Users.Include("Account");

This displays:
Ron $50
Carl $30

Это показывает, что у Рона есть 50 долларов, что составляет сумму счета1, котораянеправильно, потому что у Рона есть номер счета 2 ....

Почему это не работает?

Я сталкивался с этим в нескольких таблицах, которые у меня есть, не обязательно, что idUser должен бытьIdAccount, это просто пример, иллюстрирующий проблему ..

Есть идеи? Я все еще работал над этим, я сделал базу данных с нуля, и IdAccount - это внешний ключ таблицы Account, но он делаетто же самое ...

Я делаю это в среде ASP mvc, это похоже на запрос из учебника музыки, но там, похоже, работает нормально с Genres.Include ("Альбомы") делает этосвязано с тем, чтоэто отношения один-к-одному?

Ответы [ 3 ]

0 голосов
/ 24 марта 2011

Я понял это из вашего другого вопроса , и я думаю, что это неверная проблема отношения с внешним ключом. Я предполагаю, что это потому, что ваш внешний ключ пользователя называется Id, где EF ожидает, что Id будет первичным ключом. Обычно внешний ключ для пользователя будет User.AccountId вместо User.Id.

0 голосов
/ 25 марта 2011

С здесь

Code First теперь выведет, что любое свойство с именем <navigation property name><primary key property name> (i.e. SubjectISBN), <principal class name><primary key property name> (т.е. BookISBN) или <primary key property name> (т.е. ISBN), стот же тип данных, что и первичный ключ, представляет внешний ключ для отношения.Если найдено несколько совпадений, приоритет отдается в порядке, указанном выше.При обнаружении внешнего ключа регистр не учитывается.

Попробуйте изменить имена ключей вместо «AccountId» вместо «IdAccount».Я предполагаю, что он использует IdUser в качестве внешнего ключа для отношений между пользователем <-> Учетная запись.

0 голосов
/ 23 марта 2011

Я подозреваю, что вы сгенерировали EDMX из базы данных, когда внешний ключ был неправильным, а затем обновили базу данных, чтобы она была правильной.

Если вы проверите свойства свойства навигации, оно должно сломатьсяна уровень поля / FK, и вы сможете увидеть это.

Если вы удалите edmx и воссоздаете из базы данных, он должен работать как положено.

Мы можем подтвердить это, посмотрев наedmx xml.

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