3

C#の日時とSQLの日時を同等に比較しようとしていますが、これらの値が格納されている精度が原因で失敗しているようです。

したがって、次のフィールドを持つ非常に単純なSQLテーブルがあるとします。

ID (PK, int, not null) - identity
Title (text, null)
UpdateTime (datetime, not null)

UpdateTimeをDateTimeに設定して、EntityFrameworkを介してクラスオブジェクトを作成します。次のようになります。

DateTime now = DateTime.Now;
Title.UpdateTime = now;

新しいオブジェクトをテーブルに挿入すると、すべての値が正しく格納されているように見えます。ここで、オブジェクト用に作成されたIDが必要です。

これは物事がおかしくなるところです。LINQを介してIDをプルバックしてみます。

Title.ID = context.DBTitles.Where(x=>x.UpdateTime == now).FirstOrDefault().ID;

これは例外をスローします。これは、挿入した「now」がテーブルに挿入された「now」とおそらく同じであるにもかかわらず、クエリがnullを返すためです。

だから私の質問:私のC#日時がSQLに保存されている日時と等しいことを確認するにはどうすればよいですか?IDを取り戻すための最良の方法は何ですか?

4

2 に答える 2

6

SQLサーバーを使用している場合は、DateTime2代わりにを使用してください。.NETタイプと同じ精度です。

于 2012-10-24T21:16:56.167 に答える
3

Linqを使用している場合、挿入するオブジェクトはコミット時に割り当てられたIDを取得しませんか?あなたはそれを「思い出す」必要はありません。

于 2012-10-24T21:17:23.060 に答える