Отношения внешнего ключа в Entity Framework v.1 - PullRequest
1 голос
/ 15 июня 2010

Мне нужно создать модель данных сущности в EF версии 1, потому что мой веб-хост еще не имеет Framework 4.0. Ниже приведен простой пример, демонстрирующий проблему.

У меня есть 3 таблицы, одна таблица пользователей, другая таблица веб-страниц и одна таблица с посещениями. Каждая из двух первых таблиц имеет отношение «один ко многим» с таблицей «Посещения» (которая в основном работает как отношение «многие ко многим», только таблица «Посещения» имеет собственный первичный ключ и дополнительные поля)

С версией 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 проходит через пользователей, что нормально, но внутренний цикл никогда не вводится, так как не возвращаются посещения. Опять же, в Framework 4.0 он работает нормально, используя ту же базу данных.

Так что не так?

1 Ответ

2 голосов
/ 15 июня 2010

Просто измените свой код на это:

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"; 
    } 
} 

Обратите внимание на «Включить» (...), в котором EF активно загружает посещения каждого пользователя.

С этим все должно работать.

На самом деле, если веб-страница также является навигацией, вам может потребоваться:

Include("Visits.Webpage");

Надеюсь, это работает

...