Код EF первый 4.1 двунаправленная настройка один ко многим - PullRequest
2 голосов
/ 16 июня 2011

У меня есть следующий код:

modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired();

Модель выглядит как

public class User
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item    
{
    public long Id { get; set; }
    public string Title { get; set; }

    public virtual User User { get; set; }
}

Когда EF генерирует базу данных для меня, я получаю два внешних ключа в таблице Items (User_Id и User_Id1) вместо одного.Как мне настроить это так, чтобы для меня был создан только один ключ?

Просто для целей тестирования я удалил пользователя из класса Item, и в этом случае конфигурация работает просто отлично, и создается только один ключ.

1 Ответ

6 голосов
/ 16 июня 2011

Не уверен, что это просто опечатка в вашем вопросе, но я уверен, что ваше утверждение modelBuilder должно быть modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired(i => i.User);

Не уверен, если это ваша проблема или нет, но я бы, конечно, начал там.

Возможно, вы также захотите добавить длинный идентификатор FK в свой класс предметов

public class Item
{
   public long Id {get; set;}
   public long UserId {get; set;} //links directly to UserId

   public string Title {get; set;}

   public virtual User User {get; set;}
}
...