メインメニューを開く

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;

解決策編集

知らん。


関連項目編集

参考文献編集


外部リンク編集