У меня есть объект, который я пытаюсь обновить, используя MVC (2), также используя EntityFramework Framework.
Я знаю, что не предоставил много кода, но на самом деле не считаю это необходимым. Причину такой логики я объясню:
- У меня есть несколько каскадных выпадающих списков, и когда один из раскрывающихся списков пуст, я использую jQuery, чтобы заполнить его значением "НЕИЗВЕСТНО", например. с идентификатором как -1.
- Поэтому, когда я получаю значение -1, я создаю значение UNKNOWN, которое находится в другой таблице.
- Затем я нахожу этот объект и присваиваю ему
Fruit
Код такой:
if (id == -1)
{
//The object was unknown so create it
var newUnknown = new Fruit
{
Name = "UNKNOWN";
};
EntityFramework.AddToFruits(newUnknown);
EntityFramework.SaveChanges();
defaultValueObject = EntityFramework.Fruits.Single(x=>x.FruitID == newUnknown.FruitID);
object.Fruit = defaultValueObject;
object.Date = DateTime.Now;
UpdateModel(object);
EntityFramework.SaveChanges();
После запуска строки UpdateModel(object);
значение, которое я установил, например, Fruit
, возвращается к тому, что было отправлено из формы ... (что равно -1), а затем EntityFramework.SaveChanges();
завершается с ошибкой FK наоборот ( потому что фрукты с идентификатором -1 не существует)! Справедливо, но это не то, что я вам поручил!
Я не понимаю, почему это возвращается, потому что после первого AddToFruits()
неизвестное находится в базе данных нормально ... и все до UpdateModel(object);
это в object
...
Если он добавит его так, как я его назначил, исключений для FK не будет. Но MVC UpdateModel решает сделать что-то странное и по умолчанию (возможно, то, что пришло с отправкой формы) и облажается.
Почему это происходит? Как я могу это исправить?