Невозможно реализовать отношения модели базы данных - PullRequest
0 голосов
/ 25 июня 2019

У меня проблема с приложением в postgres.Для справки я пытаюсь реализовать эту модель БД:

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

Я смог правильно создать базу данных в Postgres, подключить свое приложение .Net к базе данных и т. Д., Единственное, что меня сдерживает, это после сохраненияобъект:

var blog = new Blog();
blog.Url = "UrlTest";

var post = new List<Post>();
var entry = new Post();
post.Title = "Entry Title";
post.Add(entry);

blog.Posts = post;
context.Blog.Add(blog);
context.SaveChanges();

Просто прямое отношение ко многим.После сохранения изменений я запрашиваю контекст, и он видит взаимосвязь только что созданного блога и поста.

К сожалению, когда я перезапускаю свое .Net Core приложение и пытаюсь перечислить весь блог, он будет отображаться как нулевой, но когда я зашел на сервер базы данных и запросил таблицу сообщений, я смог подтвердить, что у него все еще есть блог.Id.

Я перепробовал все предложения ниже, но с моей стороны ничего не работает: Пустой внешний ключ кода структуры сущности

Редактировать: Вот мой DbContext:

 protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>();
        modelBuilder.Entity<Post>();
        modelBuilder.Entity<Blog>()
            .HasMany(c => c.Post)
            .WithOne(c => c.Blog)
            .HasForeignKey(c => c.BlogId)
            .OnDelete(deleteBehavior: DeleteBehavior.Cascade);
        base.OnModelCreating(modelBuilder);
    }

    public DbSet<Post> Posts { get; set; }
    public DbSet<Blog> Blogs { get; set; }

Я также пытался поместить виртуальное в список в модели блога и блог в модели поста, но не сработало

1 Ответ

0 голосов
/ 26 июня 2019

Этот ответ на самом деле от Мустафы Гурзеля на комментарии к моему посту - docs.microsoft.com/en-us/ef/core/querying/related-data

Я не уверен, связано ли это с Postgres или ядром .net, так как мой опыт работы с .Net MVC 4 с MSSQL заключается в том, что мне не нужно объявлять отложенную загрузку, кроме объявления «виртуального».

В этом случае мне нужно установить Entity Framework Proxy, чтобы он работал без загрузки Eager.

...