申し訳ありませんが、コメントするだけでなく、質問への回答としてこれを投稿する必要があることに気づきました...「新しい男」を笑わないでください
さらなる議論とテストを通じて、この問題はADO.NETとNHibernateによるデータ型DATEのMSSQL2008列のDbType.Dateの使用に関連しているようです。コードがDbType.Dateの代わりにSqlDbType.Dateを使用している場合、そのような問題は発生せず、すべてが指定どおりに実行されます。
DbType.Dateの使用は、他のデータベースタイプに対してより「移植可能」に見えるかもしれませんが、ADO.NET DbType.Dateには最小値1/1/1753の制限があるため、この問題が発生します。
この問題の回避策は、列のタイプがDATETIME2であることをNHibernateに通知することです。これは、1753年1月1日より前の日付値もサポートします。 NHibernateマッピングが次の場合:
<property name="TestDate" type="datetime2">
<column name="TestDate" sql-type="date" />
</property>
コードは例外なく期待どおりに機能します。
NHibernateがMsSql2008方言を使用していることを認識せず、DbTypesではなくSqlDbTypesを使用しているのは残念ですが、この回避策は今のところ機能しているようです。
ADO.NETの側面の詳細については、ADO.NETがSQLServer2008の日付列に最小値を挿入するとクラッシュします 。これを手伝ってくれた@GrahamBunceに感謝します。
この情報が、将来この問題に遭遇した人の助けになることを願っています。