как исправить ошибку EntityReference - PullRequest
2 голосов
/ 16 ноября 2010

Я пытаюсь добавить в базу данных в основном все новые объекты, кроме пользователя. Я новичок в структуре сущностей, и я не уверен, как бороться с этой ошибкой.

Ошибка в строке _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 ]

1 голос
/ 27 августа 2011

Как говорит 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)

или что-то в этом роде. Я сталкивался с этой проблемой пару раз, и до сих пор это работало.

НТН

0 голосов
/ 17 ноября 2010

Вместо создания «нового элемента календаря» вы должны использовать _db.OrderDetails.CalendarItem.New () и т. Д. ... или что-либо или установить для _newCalendarItem.EntityKey значение null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...