【发布时间】:2010-09-13 02:32:45
【问题描述】:
我刚刚遇到了与使用 SQL Server 作为数据存储的 ASP.NET MVC 应用程序一起使用的实体框架实体的意外行为。对于标记为不允许为空的列,我没有在实体的元数据部分类中设置数据注释必需属性(我的印象是我必须为我希望强制执行的所有属性)但是在我的视图中的 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 属性的错吗?让我明确一点,如果确实如此,那么这非常好,尽管我以前没有注意到它并且想验证这是否是正确的行为,或者我有什么东西搞砸了?
【问题讨论】:
标签: sql-server asp.net-mvc entity-framework