尝试将多个实体级别添加到我的 EF 上下文时,我得到一个对象引用未设置为对象错误的实例。
采取以下三级示例类结构:
public class Forum
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Blog> Blogs { get; set; }
}
public class Blog
{
public int ID { get; set; }
public string Name { get; set; }
public int ForumID { get; set; }
public virtual Forum Forum { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
public class Post
{
public int ID { get; set; }
public string Name { get; set; }
public int BlogID { get; set; }
public virtual Blog Blog { get; set; }
}
对于给定的论坛,我想添加一个带有新帖子的新博客:
Forum MyForum = context.Forums.Find(1);
Blog MyBlog = new Blog { Name = "My New Blog" };
Post MyPost = new Post { Name = "My New Post" };
MyForum.Blogs.Add(MyBlog); // This WORKS
MyBlog.Posts.Add(MyPost); // This FAILS
context.SaveChanges(); // We never make it this far
我已经尝试了所有可能的订单组合,包括context.SaveChanges()
在.Add(MyBlog)
. 似乎令人窒息,因为没有Blog.ID
用于 for Post.BlogID
,但 EF 生成临时键值以供在这种情况下使用。
有任何想法吗?