|
From: <fab...@us...> - 2010-08-02 22:34:25
|
Revision: 5101
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5101&view=rev
Author: fabiomaulo
Date: 2010-08-02 22:34:19 +0000 (Mon, 02 Aug 2010)
Log Message:
-----------
Fix NH-2160 (for datetimeoffset too)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs
trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml
trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/DriverTest/EntityForMs2008.hbm.xml
trunk/nhibernate/src/NHibernate.Test/DriverTest/Sql2008DateTime2Test.cs
Modified: trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2010-08-02 21:44:15 UTC (rev 5100)
+++ trunk/nhibernate/src/NHibernate/Driver/SqlClientDriver.cs 2010-08-02 22:34:19 UTC (rev 5101)
@@ -95,6 +95,8 @@
private const int MaxStringClobSize = MaxBinaryBlobSize / 2;
private const byte MaxPrecision = 28;
private const byte MaxScale = 5;
+ private const byte MaxDateTime2 = 8;
+ private const byte MaxDateTimeOffset = 10;
private static void SetDefaultParameterSize(IDbDataParameter dbParam, SqlType sqlType)
{
@@ -130,6 +132,12 @@
dbParam.Size = MaxStringSize;
}
break;
+ case DbType.DateTime2:
+ dbParam.Size = MaxDateTime2;
+ break;
+ case DbType.DateTimeOffset:
+ dbParam.Size = MaxDateTimeOffset;
+ break;
}
}
Added: trunk/nhibernate/src/NHibernate.Test/DriverTest/EntityForMs2008.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/DriverTest/EntityForMs2008.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/DriverTest/EntityForMs2008.hbm.xml 2010-08-02 22:34:19 UTC (rev 5101)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ namespace="NHibernate.Test.DriverTest"
+ assembly="NHibernate.Test">
+
+ <class name="EntityForMs2008">
+ <id name="Id">
+ <generator class="native" />
+ </id>
+ <property name="DateTimeProp" type="DateTime2"/>
+ <property name="TimeSpanProp" type="TimeSpan"/>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml 2010-08-02 21:44:15 UTC (rev 5100)
+++ trunk/nhibernate/src/NHibernate.Test/DriverTest/MultiTypeEntity.hbm.xml 2010-08-02 22:34:19 UTC (rev 5101)
@@ -16,5 +16,6 @@
<property name="BinaryBlob" type="BinaryBlob"/>
<property name="Binary" type="Byte[]"/>
<property name="StringClob" type="StringClob"/>
- </class>
+ <property name="DateTimeProp" type="DateTime"/>
+ </class>
</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/DriverTest/Sql2008DateTime2Test.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/DriverTest/Sql2008DateTime2Test.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/DriverTest/Sql2008DateTime2Test.cs 2010-08-02 22:34:19 UTC (rev 5101)
@@ -0,0 +1,74 @@
+using System;
+using System.Collections;
+using NHibernate.Cfg;
+using NHibernate.Dialect;
+using NUnit.Framework;
+using SharpTestsEx;
+using Environment = NHibernate.Cfg.Environment;
+
+namespace NHibernate.Test.DriverTest
+{
+ public class EntityForMs2008
+ {
+ public virtual int Id { get; set; }
+ public virtual DateTime DateTimeProp { get; set; }
+ public virtual TimeSpan TimeSpanProp { get; set; }
+ }
+
+ public class Sql2008DateTime2Test : TestCase
+ {
+ protected override void Configure(Configuration configuration)
+ {
+ configuration.SetProperty(Environment.PrepareSql, "true");
+ }
+ protected override string MappingsAssembly
+ {
+ get { return "NHibernate.Test"; }
+ }
+
+ protected override IList Mappings
+ {
+ get { return new[] { "DriverTest.EntityForMs2008.hbm.xml" }; }
+ }
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return dialect is MsSql2008Dialect;
+ }
+
+ [Test]
+ public void Crud()
+ {
+ var expectedMoment = new DateTime(1848, 6, 1, 12, 00, 00, 123);
+ var expectedLapse = new TimeSpan((DateTime.Now - expectedMoment).Ticks);
+ object savedId;
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ savedId = s.Save(new EntityForMs2008
+ {
+ DateTimeProp = expectedMoment,
+ TimeSpanProp = expectedLapse,
+ });
+ t.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ var m = s.Get<EntityForMs2008>(savedId);
+ m.DateTimeProp.Should().Be(expectedMoment);
+ m.TimeSpanProp.Should().Be(expectedLapse);
+ t.Commit();
+ }
+
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.CreateQuery("delete from EntityForMs2008").ExecuteUpdate();
+ t.Commit();
+ }
+ }
+
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs 2010-08-02 21:44:15 UTC (rev 5100)
+++ trunk/nhibernate/src/NHibernate.Test/DriverTest/SqlClientDriverFixture.cs 2010-08-02 22:34:19 UTC (rev 5101)
@@ -1,3 +1,4 @@
+using System;
using System.Collections;
using NHibernate.Cfg;
using NHibernate.Dialect;
@@ -8,6 +9,10 @@
{
public class MultiTypeEntity
{
+ public MultiTypeEntity()
+ {
+ DateTimeProp = DateTime.Now;
+ }
public virtual int Id { get; set; }
public virtual string StringProp { get; set; }
public virtual string AnsiStringProp { get; set; }
@@ -18,6 +23,7 @@
public virtual byte[] BinaryBlob { get; set; }
public virtual byte[] Binary { get; set; }
public virtual string StringClob { get; set; }
+ public virtual DateTime DateTimeProp { get; set; }
}
[TestFixture]
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-02 21:44:15 UTC (rev 5100)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-08-02 22:34:19 UTC (rev 5101)
@@ -179,6 +179,7 @@
<Compile Include="Criteria\ProjectionsTest.cs" />
<Compile Include="Criteria\Reptile.cs" />
<Compile Include="DialectTest\MsSqlCe40DialectFixture.cs" />
+ <Compile Include="DriverTest\Sql2008DateTime2Test.cs" />
<Compile Include="DriverTest\SqlClientDriverFixture.cs" />
<Compile Include="DriverTest\SqlServerCeDriverFixture.cs" />
<Compile Include="EngineTest\CallableParserFixture.cs" />
@@ -2223,6 +2224,7 @@
<EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" />
<EmbeddedResource Include="DriverTest\SqlServerCeEntity.hbm.xml" />
<EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" />
+ <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
<EmbeddedResource Include="NHSpecificTest\NH2245\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH2257\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|