複数のエンティティ レベルを EF コンテキストに追加しようとすると、オブジェクト参照がオブジェクトのインスタンスに設定されていませんというエラーが発生します。
次の 3 レベルのクラス構造の例を見てください。
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 はこの状況で使用するための一時的なキー値を生成します。
何か案は?