1

5 つの .NET クラスと対応する SQL Server テーブルがあり、それぞれに開始日と終了日があり、2005 年、04/2005、または 04/01/ など、さまざまな程度の具体性で日付を格納する必要がある場合があります。 2005年。つまり、日、月、年を保存する必要があるかもしれません。月と年; またはちょうど年。

それを行う最善の方法は何ですか?私が使用する方法 (時間の制約のため) は、特定性のためにアプリケーションに列挙型を追加し、特定性のための列/プロパティを各クラス/テーブルに追加し、値を最も早い日付として保存することです。値。たとえば、ユーザーが 04/2005 を指定した場合は 04/01/2005 です。私はNHibernateを使用していますが、私にとっての質問は主にデータベースに関するものです。

これをもう一度やらなければならないと確信しているので、知りたいのですが、おそらくCLRユーザー定義型を使用した、より良い解決策が必要ですか?

ありがとう!

編集:選択した回答のようなことをしてしまいました。

4

2 に答える 2

0

クエリを簡単にするため、値を日付として保存することは理にかなっていると思います。具体性を宣言するために列挙型が必要だとは思いません。バッキング フィールドを使用してプロパティをモデル化し、パブリック ゲッター/セッターを介して解決を制御します。

private DateTime _theDate;

public DateTime TheDate
{
    get { return _theDate; }
    set { _theDate = new DateTime(value.Year, value.Month, 1); }
    // or use a utility class _theDate = DateUtils.MonthResolution(value);
}
于 2013-04-24T14:57:27.090 に答える