Fluent NHibernate/フルーエントマッピング/日付型
Fluent NHibernateとMySQLの組み合わせでは、C#のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。
これはMySQL側の仕様の問題で、MySQLのDATETIME型およびTIMESPAMP型が秒単位の精度までであることに起因するようだ。
目次
エンティティ
public class TimeSpace
{
public virtual long Id { get; protected set; }
public virtual DateTime DateTime { get; set; }
public virtual TimeSpan TimeSpan { get; set; }
}
マッピング
public class TimeSpaceMap : ClassMap<TimeSpace>
{
public TimeSpaceMap()
{
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.DateTime);
Map(x => x.TimeSpan);
}
}
スキーマ
C#側のDateTime型はMySQL側のDATETIME型にマッピングされている。 一方、C#側のTimeSpan型はMySQL側のBIGINT型にマッピングされている。
CREATE TABLE TimeSpace (
Id bigint(20) NOT NULL AUTO_INCREMENT,
DateTime datetime DEFAULT NULL,
TimeSpan bigint(20) DEFAULT NULL,
PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
解決策
知らん。
関連項目
参考文献