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

提供: MonoBook
ナビゲーションに移動 検索に移動

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;

解決策[編集 | ソースを編集]

知らん。


関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]