Я пытаюсь заставить проверку на стороне сервера свойства строки Entity Framework работать. Другие проверки на стороне сервера, такие как проверка типа данных и требуемые свойства dateTime и числовой EF, работают.
Это в VS 2010, .Net 4.0, MVC2 + Cloud, ADO.Net Entity Framework.
Свойство String, с которым у меня возникают проблемы, сопоставлено с необнуляемым столбцом SQL 2008, Varchar (50).
Когда я пытаюсь опубликовать в своем действии Создать пустую строку для этого свойства, я получаю следующую ошибку.
Сведения об исключении: System.Data.ConstraintException: для этого свойства нельзя установить нулевое значение.
Когда я публикую в действии пустое пространство, я успешно получаю сообщение о проверке обязательного поля.
Я пытался использовать аннотации данных и ClientSideValidation, но, похоже, существуют проблемы с ClientSideValidation, работающим с частичными представлениями и диалогами jquery.
Вот оригинальный автоматически сгенерированный код из структуры сущностей.
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String GradeTypeName
{
get
{
return GradeTypeName;
}
set
{
OnGradeTypeNameChanging(value);
ReportPropertyChanging("GradeTypeName");
_GradeTypeName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("GradeTypeName");
OnGradeTypeNameChanged();
}
}
В зависимости от сигнатуры метода Action (CREATE или EDIT), исключение может возникнуть перед входом в метод или внутри метода при вызове UpdateModel (). Внутреннее исключение находится в строке ниже из файла model.designer.cs.
_GradeTypeName = StructuralObject.SetValidValue(value, false);
Мне удалось воспроизвести это в простом веб-приложении mvc2.