Xin lỗi, tôi chỉ nhận ra rằng tôi nên đăng bài này như một câu trả lời cho câu hỏi thay vì chỉ bình luận ... Xin đừng cười "anh chàng mới!"
Qua các cuộc thảo luận và kiểm tra thêm, có vẻ như vấn đề này liên quan đến việc ADO.NET và NHibernate sử dụng cột DbType.Date cho MS SQL 2008 của kiểu dữ liệu DATE. Nếu mã đang sử dụng SqlDbType.Date thay vì DbType.Date, sẽ không có vấn đề như vậy xảy ra và mọi thứ sẽ hoạt động như được chỉ định.
Mặc dù việc sử dụng DbType.Date có vẻ dễ "di động" hơn đối với các loại cơ sở dữ liệu khác, nhưng nó lại gây ra vấn đề này, vì ADO.NET DbType.Date có giới hạn giá trị tối thiểu là 1/1/1753.
Một giải pháp cho vấn đề này là cho NHibernate biết rằng loại cột là DATETIME2, cũng hỗ trợ các giá trị ngày sớm hơn 1/1/1753. Nếu ánh xạ NHibernate là:
<property name="TestDate" type="datetime2">
<column name="TestDate" sql-type="date" />
</property>
Mã hoạt động như mong đợi mà không có ngoại lệ.
Quá tệ là NHibernate không nhận ra nó đang sử dụng phương ngữ MsSql2008 và sử dụng SqlDbTypes chứ không phải DbTypes, nhưng giải pháp này hiện có vẻ hoạt động.
Để biết thêm thông tin về các khía cạnh của ADO.NET, hãy xem ADO.NET Chèn Giá trị Tối thiểu vào SQL Server 2008 Cột ngày bị treo . Cảm ơn @Graham Bunce vì sự giúp đỡ của anh ấy.
Tôi hy vọng thông tin này sẽ hỗ trợ bất kỳ ai gặp phải vấn đề này trong tương lai.