Fluent NHibernate (1.3.0.727) の最新の NuGet パッケージを使用していますが、NHibernate 3.2 で修正されたと思われる問題がまだ発生しています (最新の Fluent は NHib 3.3 を使用しています)。データベースは Azure 上の SQL Server 2008 です。
.NET TimeSpanを sql Timeフィールドと比較するクエリを実行すると、次の例外がスローされます。
time と datetime のデータ型は、大なり演算子では互換性がありません。
サンプルクエリは次のとおりです。
TimeSpan ts = new TimeSpan(1, 0, 0);
List<Message> messages = messageRepo.FilterBy(m => m.SendTime > ts).ToList();
これが私のメッセージクラスのスニペットです:
public class Message
{
public virtual int Id { get; set; }
[DataType(DataType.Time)]
public virtual TimeSpan? SendTime { get; set; }}
}
関連するマッピングの詳細は次のとおりです。
public class MessageMap : ClassMap<Message>
{
public MessageMap()
{
Table("Message");
LazyLoad();
Id(x => x.Id).GeneratedBy.Identity().Column("MessageID");
Map(x => x.SendTime).Column("SendTime").CustomType("TimeAsTimeSpan");
}
}
私はあちこちを検索し、見つけたり考えたりできるすべてを試しました。多分私は明らかな何かを見逃していますか?助けてくれてありがとう。