我的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();
简单直接的一对多关系。保存更改后,我查询上下文,它可以查看我刚刚创建的Blog和Post的关系。
不幸的是,当我重新启动.Net Core App并尝试列出所有Blog时,它将显示为null,但是当我转到数据库服务器并查询Post表时,我能够确认它仍然具有Blog ID。 / p>
我尝试了以下所有建议,但最终无济于事: Entity framework code-first null foreign key
编辑: 这是我的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; }
我还尝试将虚拟放在Blog模型的List和Post Model的Blog中,但没有用
答案 0 :(得分:0)
此答案实际上来自于Mustafa Gursel对我的帖子-docs.microsoft.com/zh-cn/ef/core/querying/related-data
的评论。我不确定它是Postgres相关的还是.net核心,因为我在使用MSSQL的.Net MVC 4上的经验是,除了声明“虚拟”之外,我不需要声明延迟加载。
在这种情况下,我需要安装Entity Framework Proxy才能在不进行急切加载的情况下正常工作。