2013-11-26 72 views
0

我有一些代碼的問題,因爲從EF 4數據庫升級第一(的.edmx)到第一EF 6碼。實體框架6只的新記錄不解決外國實體

我有一個名爲test的表,和一個叫學生表。每個學生可以有多個測試,並且表格被連接(studentId是「學生」中的主鍵,「測試」中是外鍵)。

如果我在代碼中創建一個新的測試,然後將其添加到數據庫中,所有工作正常。問題是當我嘗試閱讀EF生成的學生財產。

var test = new test { studentId = 4, testName = "My Test", result = "B" }; 
db.Tests.Add(test); 
db.SaveChanges(); 

var studentName = test.Student.Name; // this gives an error - Student is null! 

在實體框架4,我可以,只要我救了變化添加行如上,然後,異物會變得可用。

先後在EF 6關於這個有什麼變化?唯一的其他變化是MARS也被禁用。這可能是相關的嗎?

這是該項目的普遍問題,但我希望這件事情我可以輕鬆解決。

回答

1

實體類實例是實體類型test而不是代理的是因此處理遲緩裝載的導航屬性不會延遲加載的。

更新:請嘗試以下操作來創建實體對象W /代理

var test = db.Tests.Create(); 
+0

感謝您的答覆。您能否告訴我創建新行時代碼的外觀?新實體是否應該來自dbcontext? –

+0

已更新,顯示如何創建代理實體對象 – Moho

+0

完美解釋 - 非常感謝您的幫助。 –