差分
ナビゲーションに移動
検索に移動
[[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|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 Sharp|C#]]側のDateTime型は[[MySQL]]側のDATETIME型にマッピングされている。
一方、C#側のTimeSpan型はMySQL側のBIGINT型にマッピングされている。
<source lang="mysql>
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;
</source>
== 解決策 ==
知らん。
{{stub}}
== 関連項目 ==
* [[Fluent NHibernate]]
* [[Fluent NHibernate/フルーエントマッピング]]
== 参考文献 ==
<references/>
== 外部リンク ==
{{stub}}
これは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 Sharp|C#]]側のDateTime型は[[MySQL]]側のDATETIME型にマッピングされている。
一方、C#側のTimeSpan型はMySQL側のBIGINT型にマッピングされている。
<source lang="mysql>
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;
</source>
== 解決策 ==
知らん。
{{stub}}
== 関連項目 ==
* [[Fluent NHibernate]]
* [[Fluent NHibernate/フルーエントマッピング]]
== 参考文献 ==
<references/>
== 外部リンク ==
{{stub}}