Abschirmung nullwertfähiger Domäneneigenschaften mit ViewModel

Ich verwende Entity Framework 4.0 und benutze POCO-Objekte. Wenn ich POCO-Objekte aus der Datenbank auffülle, übersetze ich Eigenschaftswerte in meine eigenen Domain-Objekte, die wir mein Modell nennen können.

Ob die Felder meines Modells NULL-fähig sind oder nicht, hängt davon ab, ob der Wert, dem es in der Datenbank zugeordnet ist, aus einer NULL- oder NOT NULL-Spalte stammt. Ich werde nicht ins Detail gehen, aber die Werte müssen in der Datenbank nullwertfähig sein, da ein Benutzer einen Entwurf des Objekts teilweise speichern kann, bevor er es öffentlich veröffentlicht. In diesem Fall habe ich mehrere Felder, die nullwertfähig sind. Angenommen, mein Modell sieht folgendermaßen aus:

public class MyModel
{
   public int? Field1 {get; set; }
   public DateTime? Field2 {get; set; }
   public int Field3 {get; set; }
}

Wenn ich dieses Modell in meiner Ansicht verwende und nullfähige Felder ausfülle, erhalte ich Fehler, die darauf hinweisen, dass ich nullfähige Eigenschaften nicht an verschiedenen Stellen als Werte verwenden kann, z. B. in Form von HTML-Hilfsprogrammenif (Model.MyBoolField.HasValue && Model.MyBoolField.Value) { // etc }, aber das fühlt sich sperrig für einen Blick.

Ich habe überlegt, ein ViewModel-Objekt zu erstellen, das von meinem ursprünglichen Domänenobjekt erbt und über Folgendes verfügtnewNicht nullfähige Versionen meiner nullfähigen Felder, die einen geeigneten Wert zurückgeben, wenn die Basisversion null ist. Also so etwas wie:

public class MyViewModel : MyModel
{
   public new int Field1
   {
      get { return base.Field1 ?? 7; }
   }

   public new DateTime Field2
   {
      get { return base.Field2 ?? DateTime.Now; }
   }
}

Mein Problem dabei ist, dass ich nicht immer einen guten "Standard" -Wert für die Anzeige kenne. Was ist, wenn ich im Getter des View Models eine Ausnahme ausgelöst habe, wenn der Basiswert null ist? Ist das schlechte Praxis?

Grundsätzlich suche ich nach einer bewährten Methode für den Umgang mit nullwertfähigen Feldern in einem Modell, insbesondere bei der Anzeige in einer Ansicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage