「Fluent NHibernate/フルーエントマッピング/日付型」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator (ページの作成:「Fluent NHibernateとMySQLの組み合わせでは、C#のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。 これはM...」) |
imported>Administrator |
||
1行目: | 1行目: | ||
[[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|C#]]のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。 | [[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|C#]]のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。 | ||
− | + | これはMySQL側の仕様の問題で、MySQLのDATETIME型およびTIMESPAMP型が秒単位の精度までであることに起因するようだ。 | |
== エンティティ == | == エンティティ == | ||
+ | <source lang="csharp"> | ||
public class TimeSpace | public class TimeSpace | ||
{ | { | ||
10行目: | 11行目: | ||
public virtual TimeSpan TimeSpan { get; set; } | public virtual TimeSpan TimeSpan { get; set; } | ||
} | } | ||
+ | </source> | ||
== マッピング == | == マッピング == | ||
+ | <source lang="csharp"> | ||
public class TimeSpaceMap : ClassMap<TimeSpace> | public class TimeSpaceMap : ClassMap<TimeSpace> | ||
{ | { | ||
23行目: | 26行目: | ||
} | } | ||
} | } | ||
+ | </source> | ||
== スキーマ == | == スキーマ == |
2012年7月8日 (日) 10:05時点における版
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;
解決策
知らん。
関連項目
参考文献