Entity Framework, код первого поколения отношений между таблицами - PullRequest
0 голосов
/ 10 декабря 2011

Я изучаю EF с MVC и слежу за видео Они говорят, что строка:

public ICollection<Chirp> Chirps { get; set; }

добавляет отношения между двумя моделями, но я не вижу никакой разницы, поэтомудалеко при просмотре обеих таблиц столбцов и ключей после регенерации таблиц БЕЗ этой строки.Я что-то упускаю, так как такого рода отношения упоминаются во всех уроках.

public class User
{

    public int Id { get; set; }
    public String Name { get; set; }
    public ICollection<Chirp> Chirps { get; set; }
}

public class Chirp
{
    public int Id { get; set; }
    public string Message { get; set; }
    public User User { get; set; }
}

public class MyContext : DbContext
{
    public DbSet<Chirp> Chirps { get; set; }
    public DbSet<User> Users { get; set; }
}

Другими словами, делает ли public ICollection Chirps {get;задавать;} сказать EF что-нибудь сделать со структурой БД?Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Кажется, что разница находится в ограничении таблицы Chirps. Без публичного ICollection Chirps {get; задавать; } его:

ALTER TABLE [dbo].[Chirps]  WITH CHECK ADD  CONSTRAINT **[Chirp_User]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id]) 

в то время как с ним его:

ALTER TABLE [dbo].[Chirps]  WITH CHECK ADD  CONSTRAINT **[User_Chirps]** FOREIGN KEY([User_id])
REFERENCES [dbo].[Users] ([id]
0 голосов
/ 11 декабря 2011

Это должна быть генерация дополнительной таблицы, которая отслеживает отношение пользователя к щебету. Найдите в своей базе данных таблицу User_Chirps или UserChirps, которая должна иметь два столбца, User_Id и Chirp_Id. Кроме того, я только что заметил, что ваше свойство id использует строчную букву i для id. Я полагаю, что соглашения в Entity Framework ожидают имя свойства Id с заглавной буквой I. Поэтому вы можете попробовать изменить это.

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