「Fluent NHibernate/フルーエントマッピング/日付型」の版間の差分

imported>Administrator
ページの作成:「Fluent NHibernateMySQLの組み合わせでは、C#のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。 これはM...」
 
imported>Administrator
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
[[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|C#]]のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。
[[Fluent NHibernate]]と[[MySQL]]の組み合わせでは、[[C Sharp|C#]]のDateTimeやTimeSpanなどの日付型においてミリ秒以下が落ちる。


これはMySQL側の仕様の問題で、MySQLのDATETIME型およびTIMESPAMP型が秒単位の精度までであることに起因する。
これは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>


== スキーマ ==
== スキーマ ==
[[C Sharp|C#]]側のDateTime型は[[MySQL]]側のDATETIME型にマッピングされている。
[[C Sharp|C#]]側のDateTime型は[[MySQL]]側のDATETIME型にマッピングされている。
一方、C#側のTimeSpan型はMySQL側のBIGINT型にマッピングされている。
一方、C#側のTimeSpan型はMySQL側のBIGINT型にマッピングされている。
<source lang="mysql>
<source lang="mysql">
CREATE TABLE TimeSpace (
CREATE TABLE TimeSpace (
   Id bigint(20) NOT NULL AUTO_INCREMENT,
   Id bigint(20) NOT NULL AUTO_INCREMENT,