MVC的新手,所以我相信有一個正確的方法來做到這一點,我失蹤了。MVC 3創建與實體框架和兒童實體的行動
我有一個實體「事件」,有一個孩子/相關實體「EventTime」。當我創建我的編輯動作時,我可以用linq語句加載事件模型。
Event mEvent = db.Events.Single(s => s.EventID == id);
然後在我看來,我步行訪問對象的孩子:
@Html.EditorFor(model => model.Event.EventTime.DateStart)
這個偉大的工程。編輯動作獲取值,進行魔術綁定並保存更改。
UpdateModel(mEvent);
db.SaveChanges();
現在到我的問題。創建操作。在asp.net上的示例音樂商店應用程序中,他們告訴您創建一個新的空模型以傳遞給您的視圖。
Event mEvent = new Event();
但是我認爲,當它擊中孩子實體Event.EventTime任何引用得到一個例外。另外在控制器創建動作,如果我嘗試創建新的mEvent對象後設置任何屬性我得到一個對象引用異常。
Event.EventTime.DateStart = DateTime.Now;
我以爲EF會在您訪問它時奇蹟般地創建孩子。我認爲這個問題是因爲我沒有從數據庫創建模型,它沒有外鍵值來引用這些對象?
那麼我想怎麼做呢?我想過一個ViewModel並加載每個實體,然後在我的HTTPPost Action中,我假設我必須以最低的子first order更新數據庫並更新引用,因爲每個實例都保存到數據庫中?看起來像它會起作用,但感覺它正在挫敗EF的目的。
感謝您的幫助。
Afaik EF爲實體提供了一個工廠構造函數:db.Events.Create()(或某些這樣的名稱)。您可能仍然需要單獨實例化EventTime並將其添加到您的Event實體,因爲EF不會奇蹟般地爲您產生新的實體。 – 2011-02-24 23:08:46