Экранирование свойств обнуляемого домена с помощью ViewModel
Я использую Entity Framework 4.0 и использую объекты POCO. Когда я заполняю объекты POCO из БД, я преобразую значения свойств в мои собственные объекты Домена, которые мы можем назвать моей Моделью.
Обязательно, будут ли поля моей Модели иметь значение Nullable, зависит от того, соответствует ли значение, которое она отображает в базе данных, столбцу NULL или NOT NULL. Я выиграл'не вдаваться в подробности, но значения должны быть обнуляемыми в БД, потому что пользователь может частично сохранить черновик объекта перед его публикацией в открытом доступе. В этом случае у меня есть несколько полей, которые можно обнулять. Так что давайте'скажем, моя модель выглядит так:
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 }
, но это кажется громоздким для представления.
Я подумал о создании объекта ViewModel, который наследует от моего исходного объекта домена и имеетnew
ненулевые версии моих пустых полей, которые возвращают соответствующее значение, если базовая версия равна нулю. Так что-то вроде:
public class MyViewModel : MyModel
{
public new int Field1
{
get { return base.Field1 ?? 7; }
}
public new DateTime Field2
{
get { return base.Field2 ?? DateTime.Now; }
}
}
Моя проблема в том, что я невсегда хорошо знаюдефолт" значение для отображения. Что делать, если я выбросил исключение в View Model?s получатель, когда базовое значение равно нулю? Это плохая практика? Я
Я в основном ищу лучшую практику о том, как обрабатывать обнуляемые поля в модели, особенно при отображении в представлении.