如何修复EntityReference错误

时间:2010-11-16 14:58:35

标签: asp.net entity-framework-4

除了用户之外,我尝试将所有新对象提交到数据库。我是实体框架的新手,我不知道如何解决这个错误。

行_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()

我相信我需要添加添加实体引用,但我不确定如何。任何人都可以指出我正确的方向

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您应该使用_db.OrderDetails.CalendarItem.New()等来代替创建“new calendaritem”...或者将_newCalendarItem.EntityKey设置为null。