5
所以說我有兩個實體,Post
和PostHistory
。每當我創建或編輯帖子時,我都想創建一個精確副本作爲PostHistory
以記錄對帖子所做的所有更改。說後實體的定義如下:如何使用EF4 Code-First一次創建兩個關聯的實體
public class Post
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<PostHistory> PostHistory{ get; set; }
}
當我創建我的第一個Post
的問題就來了。例如,如果我試試這個:
Post post = new Post { Text = "Blah" };
context.Posts.Add(post);
PostHistory history = new PostHistory { Text = "Blah"};
context.PostHistory.Add(history);
post.PostHistory.Add(history);
這將失敗,因爲因爲這兩個post
和history
是新的實體,Post.PostHistory
爲空,由於它沒有尚未初始化。我能看到這樣做的唯一方法是首先將post
提交給數據庫,然後將history
提交到數據庫,但我不明白爲什麼執行2個單獨的插入應該是必要的。
如果我有一個初始化ICollection
到List<T>
一切工作正常,但強制實施List<T>
原因等問題,幾乎沒有代碼優先教程爲此被迫發起一個構造函數。
那麼處理這種情況的最佳方法是什麼?
將列表初始化爲列表可行,但這不是一個好選擇。原因是你不能將列表轉換爲EntityCollection (所以我可以檢查集合是否已經被加載)。 –
KallDrexx
2011-02-18 01:22:34