Учитывая следующие ASP.NET MVC код контроллера:Предотвращение Ef4 ConstraintException при вызове TryUpdateModel
[HttpPost] public ActionResult Create(FormCollection collection) { string[] whitelist = new []{ "CompanyName", "Address1", "Address2", ... }; Partner newPartner = new Partner(); if (TryUpdateModel(newPartner, whitelist, collection)) { var db = new mainEntities(); db.Partners.AddObject(newPartner); db.SaveChanges(); return RedirectToAction("Details/" + newPartner.ID); } else { return View(); } }
Проблема в том с Entity Framework 4: пример Партнер объект отображается в таблице базы данных с его поля НЕ ДОПУСКАЮТСЯ NULL (это нормально по дизайну - они требуются).
К сожалению, при вызове TryUpdateModel, когда некоторые из свойств являются значениями null, создается столько ConstraintExceptions, что не ожидается! Я ожидаю, что TryUpdateModel вернет false в этом случае.
Это нормально, что EF не разрешает устанавливать значение свойства null, если это не должно быть, но TryUpdateMethod должен обработать это и добавить ошибку к коллекции ошибок ModelState.
Я ошибаюсь, или кто-то испортил реализацию метода TryUpdateModel?
Обновление: Проблема возникает для меня только при запуске приложения mvc под VS2010 (всплывают исключения проверки EF). Это нормально на сервере производства. Кто-нибудь может помочь, как предотвратить это поведение на моей машине devel? – twk