我使用实体框架4.0,并利用POCO对象。 当我从DB填充POCO的对象,我的属性值转换成我自己的域对象,我们可以称之为我的模型。
不一定,我的模型的领域是否是可空取决于它映射到数据库中的值是否来自NULL或NOT NULL列。 我不会进入细节,但该值必须在DB空的,因为用户可以部分地将其发布给公众之前保存对象的草案。 既然如此,我有几个字段是空。 所以我们可以说我的模型是这样的:
public class MyModel
{
public int? Field1 {get; set; }
public DateTime? Field2 {get; set; }
public int Field3 {get; set; }
}
如果我使用这个模型在我看来,完全可空场,我开始接收告诉我,我不能用空的属性在不同的地方的价值观,像HTML辅助等我可以这样说的错误if (Model.MyBoolField.HasValue && Model.MyBoolField.Value) { // etc }
,但感觉笨重对的图。
我认为创建一个从我原来的域对象继承,并有一个视图模型对象new
我如果基础版本为空返回一个适当的值可为空字段,非空的版本。 因此,像:
public class MyViewModel : MyModel
{
public new int Field1
{
get { return base.Field1 ?? 7; }
}
public new DateTime Field2
{
get { return base.Field2 ?? DateTime.Now; }
}
}
我的这个问题是我并不总是知道一个良好的“默认”值显示。 如果我抛出异常,在视图模型的getter当基值为null? 是贫穷的做法?
基本上,我在寻找如何处理模型中的可空字段,在视图中显示尤其当一个最佳实践。