@artshelom

Как сделать связь между объектами?

Пытаюсь сделать One to many, Но почему то если я не пересоздаю db, то связи не проходит. В чем может быть проблема. БД: postgress DB:
public MySqlContext(DbContextOptions options) : base(options)
    {
        // Database.EnsureDeleted(); // Это пересоздает таблицу, Если отключено. То не работает
        Database.EnsureCreated();
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Comment>()
            .HasOne<Article>(sc => sc.Article)
            .WithMany(s => s.Comments)
            .HasForeignKey(sc => sc.ArticleId);

        modelBuilder.Entity<Article>()
            .HasMany<Comment>(a => a.Comments)
            .WithOne(a => a.Article)
            .HasForeignKey(a => a.ArticleId);

        base.OnModelCreating(modelBuilder);
    }


Если бд пересоздается, то Comments возвращает список, а если нет то возвращает null.

Как сделать чтобы сработало?

Надо связать 2 таблицы, чтобы при получении Article, сразу подгружался список комментов
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
gotoxy
@gotoxy
Database.EnsureCreated() не пересоздаёт, а проверяет, есть ли база и, если нет, то создаёт новую, иначе ничего не происходит.
Чтобы комменты подгружались вместе с артиклями, надо указать это явно:
var articles = context.Articles.Include(a => a.Comments).ToList();


https://docs.microsoft.com/ru-ru/ef/core/querying/...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы