0

У меня возникает странная проблема. Когда я развертываю свой код, все работает. Я могу добавить заказы в свою систему. Однако, после того, как некоторые заказы были сделаны, я начинаю известную ошибку:Добавление новой записи, которая не имеет внешних ключей, приводит к «Отношения не могут быть изменены [..]» error

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted. 

Теперь, я много читал об этой ошибке, но это не поможет моему случаю. У меня есть очень простой базы данных без каких-либо внешних ключей:

enter image description here

Мой код выглядит следующим образом:

public NewOrder Create(NewOrder order) 
    { 
     var o = new WebshopOrder(); 
     o.AdvertId = order.AdvertId; 
     o.DateCreated = DateTime.Now; 
     o.IsActivated = order.OrderState > OrderState.Created; 
     o.ProductId = order.Product.Id; 
     o.UserId = order.UserId.ToString(); 

     Db.WebshopOrder.Add(o); 
     Db.SaveChanges(); 

     return new NewOrder() { WebshopOrderId = o.Id}; 
    } 

Который, в свою очередь, затем терпит неудачу, когда я говорю Db.SaveChanges().

Любая идея, что на земле может быть неправильной здесь?

+0

Ты уверен, что смотришь на правый стол? Я спрашиваю, потому что у объекта WebshopOrder есть разные свойства, а затем ваша таблица (Реклама, IsActivated). –

ответ

1

я вижу три возможности на данный момент:

  1. PRODUCTID направляется к БД как NULL
  2. OrderId отправляется в БД как NULL
  3. Временная метка отправляется в БД как NULL

Я думаю, что он жалуется на один из тех трех столбцов, которые являются единственными, которые НЕ допускают NULL. Я думаю, что ProductId имеет наибольшую вероятность быть виновником, когда ваш код вызывается иногда со значением там, а в других случаях он получает NULL-продукт.

Это может или не может быть проблемой, но ваш код:

order.Product.Id 

Вы хотите использовать это вместо этого?

order.ProductId 

Это сообщение об ошибке было бы улучшено, если бы оно было разделено на две или более ошибки, причем каждый из них был более конкретным.

0

Из вашего вопроса видно, что вы смотрите на таблицу заказов для отношений.

Вместо этого вы должны смотреть в WebshopOrder стол для любых отношений, потому что вы спасаете WebshopOrder

Db.WebshopOrder.Add(o); 
Db.SaveChanges(); 
Смежные вопросы

 Смежные вопросы