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;
解決策[編集 | ソースを編集]
知らん。
関連項目[編集 | ソースを編集]
参考文献[編集 | ソースを編集]