Я только что столкнулся с неожиданным поведением для объектов Entity Framework, используемых с приложением ASP.NET MVC с SQL Server в качестве хранилища данных. Для столбца, помеченного как недопустимое значение NULL, я не настроил атрибут аннотации данных Обязательный внутри частичного класса метаданных сущностей (у меня сложилось впечатление, что мне нужно было для всех свойств, которые я хочу сделать обязательными), но после проверки POST с моей точки зрения действие контроллера вернулось к тому же представлению в результате этой проверки
// check for errors
if (!ViewData.ModelState.IsValid)
return View(invoice);
с описанием, что свойство не должно быть нулевым. Я специально разместил текстовое поле для свойства пустым, и у меня нет пользовательских (ручных) атрибутов аннотации данных для этого свойства.
Это код, сгенерированный мастером EF для этого свойства
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.DateTime PayDate
{
get
{
return _PayDate;
}
set
{
OnPayDateChanging(value);
ReportPropertyChanging("PayDate");
_PayDate = StructuralObject.SetValidValue(value);
ReportPropertyChanged("PayDate");
OnPayDateChanged();
}
}
private global::System.DateTime _PayDate;
partial void OnPayDateChanging(global::System.DateTime value);
partial void OnPayDateChanged();
Это ошибка атрибута IsNullable для такого рода поведения? Позвольте мне прояснить, что если это действительно так, то это довольно хорошо, хотя я раньше этого не замечал и хотел бы проверить, является ли это правильным поведением или у меня там что-то не так?