Я должен создать модель данных объекта в версии 1 EF, потому что мой веб-хост еще не имеет Платформы 4.0. Ниже просто простой пример для показа проблемы.
У меня есть 3 таблицы, одна таблица Users, другая таблица Webpages и одна таблица с Посещениями. Бывшие две таблицы у каждого есть связь "один ко многим" с таблицей Visits (который в основном работает many-many отношениями, только таблица Visits имеет свой собственный первичный ключ и дополнительные поля),
С версией 4.0 это работает, но она не делает с v.1. "Посещения" имеют количество 0, таким образом, тестовая строка возвращается ""... Да ведь и как я смог бы получить доступ к отношению внешнего ключа в v.1?
UsersEntities context = new UsersEntities();
var users = context.Users;
string result = "";
foreach (var user in users)
{
foreach (var visit in user.Visits)
{
result += visit.Webpage.Url + "\n";
}
}
Так циклы цикла foreach через пользователей, которых это получает хорошо, но внутренний цикл никогда не вводится, потому что нет никаких возвращенных Посещений. Снова, в Платформе 4.0 это хорошо работает, с помощью той же базы данных.
Так что случилось?
Просто измените свой код на этот:
UsersEntities context = new UsersEntities();
var users = context.Users.Include("Visits");
string result = "";
foreach (var user in users)
{
foreach (var visit in user.Visits)
{
result += visit.Webpage.Url + "\n";
}
}
Обратите внимание на Include (...), который сообщает EF о необходимости загружать посещения каждого пользователя.
Теперь все должно работать.
На самом деле, если веб-страница тоже является навигацией, вам может понадобиться:
Include("Visits.Webpage");
Надеюсь, это сработает