私はEntityFramework4.0を使用しており、POCOオブジェクトを使用しています。DBからPOCOオブジェクトにデータを入力するとき、プロパティ値を独自のドメインオブジェクトに変換します。これをモデルと呼ぶことができます。
必然的に、モデルのフィールドがNullableであるかどうかは、モデルがデータベースでマップする値がNULL列またはNOTNULL列のどちらからのものであるかによって異なります。詳細については説明しませんが、ユーザーはオブジェクトのドラフトを公開する前に部分的に保存できるため、DBでは値をnull許容にする必要があります。その場合、null許容のフィールドがいくつかあります。それで、私のモデルが次のようになっているとしましょう:
public class MyModel
{
public int? Field1 {get; set; }
public DateTime? Field2 {get; set; }
public int Field3 {get; set; }
}
if (Model.MyBoolField.HasValue && Model.MyBoolField.Value) { // etc }
null許容フィールドを備えたこのモデルをビューで使用すると、HTMLヘルパーなど、さまざまな場所でnull許容プロパティを値として使用できないというエラーが表示され始めます。見る。
元のドメインオブジェクトを継承しnew
、ベースバージョンがnullの場合に適切な値を返すnull許容フィールドのnull許容バージョンを持たないViewModelオブジェクトを作成することを検討しました。だから次のようなもの:
public class MyViewModel : MyModel
{
public new int Field1
{
get { return base.Field1 ?? 7; }
}
public new DateTime Field2
{
get { return base.Field2 ?? DateTime.Now; }
}
}
これに関する私の問題は、表示するのに適した「デフォルト」値が常にわからないことです。基本値がnullのときにビューモデルのゲッターで例外をスローした場合はどうなりますか?それは悪い習慣ですか?
私は基本的に、特にビューに表示するときに、モデル内のnull許容フィールドを処理する方法に関するベストプラクティスを探しています。