'date'と入力されたフィールドの値null(DateTime)をデータベースに挿入しようとしましたが、常に'0001-01-01'を取得します。このフィールドは「nullを許可する」ので、なぜこのデフォルト値があるのかわかりません。
私はMVC(Entity Framework)でC#asp .netを使用しています、これは私のコードです:
Budget_Synthesis newBS = new Budget_Synthesis
{
Budget_Code = newBudgetCode,
Last_Modified_Date = null
};
db.Budget_Synthesis.AddObject(newBS);
Last_Modified_DateはSystem.DateTimeと入力されますか?だから私は彼らがこの「null」を変更する理由がわかりません。
アプリケーションに値を表示しようとすると、01/01/0001 00:00:00
が表示されます。
そして0001-01-01
with SSMS
誰かが私に本当の「NULL」を取得できない理由を説明できますか?
宜しくお願いします
これはnullに対応する値だと思います
Last_Modified_Date
の型がDateTime
の場合、 DateTime構造 -他の人がすでに述べたように-はnull許容ではないため、「実際のnull」にすることはできません。したがって、サンプルコードはコンパイルされません。
Last_Modified_Date
のタイプがDateTime?
(Nullable<DateTime>
)の場合、コードは正しいですが、@ Nikola Dimitroffが回答で述べたように、データベースに「実際のnull」を含めることはできません。 DateTime?
のデフォルト値は01/01/000100:00:00です。
探している「実際のnull」はDBNull.Value
ですが、これは System.DBNull type;にのみ使用できます。 Last_Modified_Date = DBNull.Value
を割り当てると、Last_Modified_Date
のタイプが何であれ、コードはコンパイルされません。
Null DateTime
を入れようとしていると言うとき、Nullable<DateTime>
(別名DateTime?
)を使用していますか、それとも単にDateTime
を使用していますか?後者は値型であり、そのデフォルト値は正確に01/01/0001 00:00:00
です。