2014-12-04 59 views
0

VS2103,EF6,MVC,VB在EF6中,我如何定義我的類以存儲引用列表而不是對象列表?

不斷學習代碼如何工作。用下面的類:

Public Class Order 
    Public Property OrderID as Integer 
    Public Property Products as new List(Of Product) 
    . 
    . 
End Class 

Public Class Product 
    Public Property ProductID as Integer 
    Public Property name as String 
    . 
    . 
End Class 

Public Class ApplicationDbContext 
    Public Property Orders As DbSet(Of Order) 
    Public Property Products As DbSet(Of Product) 
End Class 

當我執行以下操作:

db.Orders.Add(anOrder) 
db.SaveChanges() 

我最終也將記錄添加到產品數據表。所以我明白這不是定義類命令的方式。我試圖在訂單中擁有一個屬性,以導航到構成訂單的單個產品。我錯誤地認爲我正在創建產品的參考列表,但顯然我創建了系統將產品記錄存儲在產品數據表中的需求。

我應該編碼什麼,以便通過獲取產品的參考而不是添加到產品中,從而通過訂單上的產品細讀?如果我沒有很好地問這個問題,我很抱歉。

最好的問候, 艾倫

+0

您在這裏沒有顯示足夠的代碼來確定您做錯了什麼。顯示你的實際代碼。 – 2014-12-04 03:07:43

+0

@Erik - 我很抱歉,我正在努力關注我認爲與我的問題有關的部分,但我會回去弄清楚如何在沒有在網頁上打印書籍的情況下更清楚地顯示問題。感謝您的期待... – Alan 2014-12-04 11:20:59

回答

0

我假設你與斷開連接的實體,你提到的MVC工作。

罪魁禍首是這行代碼...

db.Orders.Add(anOrder) 

這行代碼,不僅設置了根實體(在這種情況下,訂單類的實例)的實體狀態添加但也將圖中每個對象的實體狀態設置爲已添加。當EF看到具有添加的實體狀態的對象時,它將爲這些對象發出INSERT語句。如果您的對象圖包含對現有實體的引用(例如先前已保留的Product類的實例),則您有責任適當地設置圖中每個對象的實體狀態。

相關問題