2015-10-14 58 views
0

我在我的MVC 3.0應用程序中使用實體框架4.1。該應用程序是一個n層方法,我的UI,Model,Classes,Services和Repository都在一個解決方案中放入不同的項目中。我還使用了工作單元方法和依賴注入,因此我無法訪問UI中的DbContext。保存新記錄後不能延遲加載實體

我有兩個班像下面

public partial class Form 
{ 
    public int id { get; set; } 
    public int eventID { get; set; } 
    public string sampleName { get; set; } 

    public virtual Event GetEvent{ get; set; } 
} 

public partial class Event 
{ 
    public int id { get; set; } 
    public string eventName { get; set; } 
} 

然後在我的控制,我想補充類形態的實例,這樣

Form _form = new Form(); 
_form.eventID = 3; 
_form.sampleName = "myString"; 

_formService.AddForm(_form); 
_formService.SaveChanges(); //This calls the Unit of Work Commit 

這個工程並插入記錄到數據庫中。但隨後在調用SaveChanges下面幾行()調用我嘗試延遲加載相關的事件類這樣

string _eventName = _form.GetEvent.eventName; 

但價值_form.GetEvent始終爲NULL。它看起來像GetEvent尚未加載。

任何人都可以幫助我嗎?

在此先感謝。

回答

0

嘗試GetEvent屬性重命名爲Event,使EF可以推斷的外鍵關係(通過eventId)按照通常conventions

0

你應該訪問上下文,並創建一個代理而不是新的Form,這樣你就可以在你訪問Context的庫中編寫一個方法,並且返回類型是Form類。

欲瞭解更多信息,請參閱此Link;