我正在尝试使实体框架字符串属性的服务器端验证工作.其他服务器端验证(如数据类型验证和所需的dateTime和数字EF属性)正在运行.
这在VS 2010,.Net 4.0,MVC2 + Cloud,ADO.Net Entity Framework中.
我遇到问题的字符串属性映射到SQL 2008,Varchar(50)非可空列.
当我尝试使用此属性的空字符串发布到我的Create操作时,我得到了以下错误.
异常详细信息:System.Data.ConstraintException:此属性不能设置为空值.
当我使用空格发布到操作时,我成功获得了必填字段验证消息.
我尝试过使用Data Annotations和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();
}
}
Run Code Online (Sandbox Code Playgroud)
根据Action方法(CREATE或EDIT)的签名,在调用UpdateModel()之前,可能会在步入方法之前或在方法内发生异常.内部异常位于model.designer.cs文件的下面一行.
_GradeTypeName = StructuralObject.SetValidValue(value, false);
Run Code Online (Sandbox Code Playgroud)
我已经能够在一个简单的mvc2 Web应用程序上重现这一点.