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. |