NHibernate の流暢なインターフェイスを使用した自動マッピングに (少し) 深く入り込んでいます。とてもいいことですが、DateTimes で少し問題が発生しました。データ形式をタイムスタンプに変更する必要があります。そうしないと、NHibernate がミリ秒を切り捨てます。
いくつかの情報源を見つけましたが、最良の情報源は次のとおりでした: AutoMapping Info 1ここで、彼は列名とプロパティのタイプを変更しています。このドキュメントによると、問題は流暢な自動マッピングに変更があったことです。
自動マッピングで「タイプを変更」する方法がわかりません。次のコードを試しましたが、行き詰まっています。繰り返しますが、私がやりたいことは、単純にオートマッパーに次のように指示することです。
自動マッピングの使用時にミリ秒の切り捨てを防ぐには、DateTime にタイムスタンプを使用します。
誰でもアイデアを得ましたか?これまでのコード:
public class DateTimeToTimestamp : IClassConvention
{
public bool Accept(IClassMap target)
{
return target.GetType() == typeof(DateTime);
}
public void Apply(IClassMap target)
{
throw new NotImplementedException();
}
}
わかりました、答えてくれてありがとう...そのように私にとっては十分な快適さです。この精度を必要とする 3 つのクラスが実際にある場合、3 回の書き込みに対処できます。特に、他のすべてのプロパティのマッピングは引き続き完全に機能し、次のコードは必要な 1 つのプロパティのみを変更するためです... とてもいいです!
より一般的なアプローチを知っている人がいれば、遠慮なく追加してください。
私の場合のコードは次のとおりです。
public class DateTimeToTimestamp : IAutoMappingOverride<CustomTime>
{
public void Override(AutoMap<CustomTime> mapping)
{
mapping.Map(x => x.ScanDate).CustomTypeIs("timestamp");
}
}