2010-11-16 17 views
2

我試圖提交大部分所有新對象到數據庫,除了用戶。我是新來的實體框架,我不知道如何對付這個錯誤。如何解決EntityReference錯誤

錯誤上線_orderDetail.CalenderItems.Add(_newCalendarItem):

對象不能添加或附接,因爲它的EntityReference具有不匹配的EntityKey此對象的的EntityKey屬性值。

代碼:

_db.Orders.AddObject(_order) 
     For Each n In _namelist 
      _db.Names.AddObject(n) 
     Next 
     For Each n In _namelist 
      For i As Integer = 1 To _copies 
       Dim _orderDetail As New OrderDetail 
       _db.OrderDetails.AddObject(_orderDetail) 
       _orderDetail.Name = n 
       _orderDetail.Order = _order 
       For Each c In _calendarItems 
        Dim _newCalendarItem As New CalenderItem 
        _newCalendarItem.Image = c.Image 
        _newCalendarItem.YearMonth = c.YearMonth 
        _orderDetail.CalenderItems.Add(_newCalendarItem) 
       Next 
      Next 
     Next 
     _db.SaveChanges() 

我相信我需要添加添加一個實體引用,但我不知道怎麼樣。任何人都可以指向正確的方向

回答

1

由於dnndeveloper說,你的答案是ObjectContext.CreateObject<T>.

所以你會想 -

Dim ci = _db.CreateObject(Of CalenderItem)() 
ci.OrderDetail = _orderDetail 
ci.Image = c.image 
ci.YearMonth = c.YearMonth 

_orderDetail.CalenderItems.Add(ci) 

或類似的規定。我已經遇到了這個問題幾次,這個工作到目前爲止。

HTH

0

而不是創建一個「新的calendaritem」你應該使用_db.OrderDetails.CalendarItem.New()等等......或者將_newCalendarItem.EntityKey設置爲null。

+0

試過,_orderDetail.CalenderItems.Add(新澤西CalenderItem(){隨着圖像配= c.Image,.YearMonth = c.YearMonth,.EntityKey =無}) – cja100 2010-11-17 09:22:03

+0

並且還嘗試設置的EntityKey =與舊代碼沒有任何關係,並嘗試使用New而不設置entitykey。我對所有人都有同樣的問題。 – cja100 2010-11-17 09:23:33

+0

這就是你想要的: – dnndeveloper 2010-11-17 15:54:30