Учитывая следующий код контроллера ASP.NET MVC:
[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: пример сущности Partner сопоставлен с таблицей базы данных с полями, которые НЕ ДОПУСКАЮТСЯ, чтобы быть НЕДЕЙСТВИТЕЛЬНЫМИ (что в порядке - они обязательны).
К сожалению, при вызове TryUpdateModel, когда некоторые свойства имеют значение NULL, выдается столько же исключений ConstraintException, сколько и не ожидается! Я ожидаю, что TryUpdateModel вернет false в этом случае.
Это нормально, что EF не позволит установить значение свойства равным нулю, если оно не должно быть, но TryUpdateMethod должен обработать это и добавить ошибку в коллекцию ошибок ModelState.
Я ошибаюсь, или кто-то испортил реализацию метода TryUpdateModel?