Как выразить отношение «имеет много сквозных» в Entity Framework 5?

Я пытаюсь использовать Entity Framework 5 для запроса существующей базы данных MySQL. Я использовал code-first для создания модели на основе кода, которая отображается в существующую базу данныхэтот учебник на MSDN.

У меня есть две таблицы:users а такжеbuddies,User имеетid,name иemail,Buddy имеетuser_id иbuddy_id,User имеет многоBuddies (которые такжеUsers).buddy_id столбец является внешним ключом обратно вUsers Таблица. Так что каждыйUser имеет многоUsers через .Buddies

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public IList Buddies { get; set; } 
}

Вот мой код доступа к базе данных:

using (var db = new Models.fooContext())
{
    foreach (Models.user user in db.users)
    {
        var u = new User
        {
            Id      = user.id,
            Name    = user.name,
            Email   = user.email,
            Buddies = new List()
        };

        // this is obviously very inefficient but I am just
        // trying to get anything to work
        foreach (Models.buddy buddy in db.buddies) // this line throws an exception
        {
            if (buddy.user_id == user.id)
            {
                var b = new User();
                // take buddy.user_id and find this user in the user table
                u.Buddies.Add(b);
            }
        }

        // serialize User and write it to a file here
    }
}

Этот код генерирует следующее исключение в строке, указанной выше:

System.Data.EntityCommandExecutionException: произошла ошибка при выполнении определения команды. Смотрите внутреннее исключение для деталей. "

Внутреннее исключениеMySql.Data.MySqlClient.MySqlException с сообщением

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

Мои вопросы:

Как мне создать отношения, которые говорят EF, что каждыйUser имеет много ?BuddiesКак только EF понимает, чтоUser имеет многоBuddiesКак я могу использоватьbuddy_id найтиUser запись для этого?Buddy

Ответы на вопрос(1)

Ваш ответ на вопрос