2010-11-16 101 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