Fluent NHibernate/フルーエントマッピング/日付型

提供: MonoBook
< Fluent NHibernate‎ | フルーエントマッピング
2012年7月8日 (日) 10:05時点におけるimported>Administratorによる版 (ページの作成:「Fluent NHibernateMySQLの組み合わせでは、C#のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。 これはM...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Fluent NHibernateMySQLの組み合わせでは、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;

解決策

知らん。


関連項目

参考文献


外部リンク