Skip to content

Commit d7b30a5

Browse files
fredericDelaportehazzik
authored andcommitted
NH-3919 - Document changes in date time types.
1 parent a15a1a5 commit d7b30a5

File tree

1 file changed

+83
-20
lines changed

1 file changed

+83
-20
lines changed

doc/reference/modules/basic_mapping.xml

Lines changed: 83 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2638,14 +2638,30 @@
26382638
<row>
26392639
<entry><literal>DateTime</literal></entry>
26402640
<entry><literal>System.DateTime</literal></entry>
2641-
<entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry>
2642-
<entry>Default when no <literal>type</literal> attribute specified.</entry>
2641+
<entry>
2642+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><co id="basic_mapping.datetime-co" linkends="basic_mapping.datetime"/>
2643+
</entry>
2644+
<entry>
2645+
Default when no <literal>type</literal> attribute specified. Does no
2646+
more ignore milliseconds since NHibernate v5.0.
2647+
</entry>
2648+
</row>
2649+
<row>
2650+
<entry><literal>DateTimeNoMs</literal></entry>
2651+
<entry><literal>System.DateTime</literal></entry>
2652+
<entry>
2653+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2654+
</entry>
2655+
<entry><literal>type="DateTimeNoMs"</literal> must be specified. Ignores milliseconds.</entry>
26432656
</row>
26442657
<row>
26452658
<entry><literal>DateTime2</literal></entry>
26462659
<entry><literal>System.DateTime</literal></entry>
26472660
<entry><literal>DbType.DateTime2</literal></entry>
2648-
<entry><literal>type="DateTime2"</literal> must be specified.</entry>
2661+
<entry>
2662+
<literal>type="DateTime2"</literal> must be specified. Obsolete since
2663+
NHibernate v5.0, use <literal>DateTime</literal> instead.
2664+
</entry>
26492665
</row>
26502666
<row>
26512667
<entry><literal>DateTimeOffset</literal></entry>
@@ -2656,9 +2672,14 @@
26562672
<row>
26572673
<entry><literal>DbTimestamp</literal></entry>
26582674
<entry><literal>System.DateTime</literal></entry>
2659-
<entry><literal>DbType.DateTime</literal> - as specific as database supports.</entry>
2660-
<entry><literal>type="DbTimestamp"</literal> must be specified. When used as a <literal>version</literal>
2661-
field, uses the database's current time rather than the client's current time.</entry>
2675+
<entry>
2676+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2677+
</entry>
2678+
<entry>
2679+
<literal>type="DbTimestamp"</literal> must be specified. When used as a
2680+
<literal>version</literal> field, uses the database's current time retrieved
2681+
in dedicated queries, rather than the client's current time.
2682+
</entry>
26622683
</row>
26632684
<row>
26642685
<entry><literal>Decimal</literal></entry>
@@ -2699,9 +2720,26 @@
26992720
<row>
27002721
<entry><literal>LocalDateTime</literal></entry>
27012722
<entry><literal>System.DateTime</literal></entry>
2702-
<entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry>
2703-
<entry><literal>type="LocalDateTime"</literal> must be specified. Ensures the
2704-
<literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Local</literal></entry>
2723+
<entry>
2724+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2725+
</entry>
2726+
<entry>
2727+
<literal>type="LocalDateTime"</literal> must be specified. Ensures the
2728+
<literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Local</literal>.
2729+
Throws if set with a date having another kind.
2730+
Does no more ignore milliseconds since NHibernate v5.0.
2731+
</entry>
2732+
</row>
2733+
<row>
2734+
<entry><literal>LocalDateTimeNoMs</literal></entry>
2735+
<entry><literal>System.DateTime</literal></entry>
2736+
<entry>
2737+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2738+
</entry>
2739+
<entry>
2740+
<literal>type="LocalDateTimeNoMs"</literal> must be specified. Similar to
2741+
<literal>type="LocalDateTime"</literal> but ignores milliseconds.
2742+
</entry>
27052743
</row>
27062744
<row>
27072745
<entry><literal>PersistentEnum</literal></entry>
@@ -2750,15 +2788,13 @@
27502788
<row>
27512789
<entry><literal>Timestamp</literal></entry>
27522790
<entry><literal>System.DateTime</literal></entry>
2753-
<entry><literal>DbType.DateTime</literal> - as specific as database supports.</entry>
2754-
<entry><literal>type="Timestamp"</literal> must be specified.</entry>
2755-
</row>
2756-
<row>
2757-
<entry><literal>TimestampUtc</literal></entry>
2758-
<entry><literal>System.DateTime</literal></entry>
2759-
<entry><literal>DbType.DateTime</literal> - as specific as database supports.</entry>
2760-
<entry><literal>type="TimestampUtc"</literal> must be specified. Ensures the
2761-
<literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Utc</literal></entry>
2791+
<entry>
2792+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2793+
</entry>
2794+
<entry>
2795+
Obsolete, its <literal>Timestamp</literal> alias will be remapped to
2796+
<literal>DateTime</literal> in a future version.
2797+
</entry>
27622798
</row>
27632799
<row>
27642800
<entry><literal>TrueFalse</literal></entry>
@@ -2787,8 +2823,25 @@
27872823
<row>
27882824
<entry><literal>UtcDateTime</literal></entry>
27892825
<entry><literal>System.DateTime</literal></entry>
2790-
<entry><literal>DbType.DateTime</literal> - ignores the milliseconds</entry>
2791-
<entry>Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Utc</literal></entry>
2826+
<entry>
2827+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2828+
</entry>
2829+
<entry>
2830+
Ensures the <literal>DateTimeKind</literal> is set to <literal>DateTimeKind.Utc</literal>.
2831+
Throws if set with a date having another kind.
2832+
Does no more ignore milliseconds since NHibernate v5.0.
2833+
</entry>
2834+
</row>
2835+
<row>
2836+
<entry><literal>UtcDateTimeNoMs</literal></entry>
2837+
<entry><literal>System.DateTime</literal></entry>
2838+
<entry>
2839+
<literal>DbType.DateTime</literal> / <literal>DbType.DateTime2</literal><coref linkend="basic_mapping.datetime-co" />
2840+
</entry>
2841+
<entry>
2842+
<literal>type="UtcDateTimeNoMs"</literal> must be specified. Similar to
2843+
<literal>type="LocalDateTime"</literal> but ignores milliseconds.
2844+
</entry>
27922845
</row>
27932846
<row>
27942847
<entry><literal>YesNo</literal></entry>
@@ -2800,6 +2853,16 @@
28002853
</tgroup>
28012854
</table>
28022855

2856+
<calloutlist>
2857+
<callout arearefs="basic_mapping.datetime-co" id="basic_mapping.datetime">
2858+
<para>
2859+
Since NHibernate v5.0 and if the dialect supports it, <literal>DbType.DateTime2</literal>
2860+
is used instead of <literal>DbType.DateTime</literal>. This may be disabled by setting
2861+
<literal>sql_types.keep_datetime</literal> to <literal>true</literal>.
2862+
</para>
2863+
</callout>
2864+
</calloutlist>
2865+
28032866
<table>
28042867
<title>System.Object Mapping Types</title>
28052868
<tgroup cols="4">

0 commit comments

Comments
 (0)