From: <dar...@us...> - 2009-02-05 06:51:14
|
Revision: 4050 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4050&view=rev Author: darioquintana Date: 2009-02-05 06:50:53 +0000 (Thu, 05 Feb 2009) Log Message: ----------- Workaround to use SqlServer2008 FileStream Modified Paths: -------------- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Convert.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Fixture.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Mappings.hbm.xml trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/VendorCatalog.cs Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Convert.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Convert.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Convert.cs 2009-02-05 06:50:53 UTC (rev 4050) @@ -0,0 +1,20 @@ +using System.Text; + +namespace NHibernate.Test.NHSpecificTest.FileStreamSql2008 +{ + /// <summary> + /// Byte[]-to-String and String-to-Byte[] converter + /// </summary> + public class Convert + { + public static byte[] ToBytes(string str) + { + return new ASCIIEncoding().GetBytes(str); + } + + public static string ToStr(byte[] bytes) + { + return new ASCIIEncoding().GetString(bytes); + } + } +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Fixture.cs (from rev 4046, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Dates/FixtureBase.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Fixture.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Fixture.cs 2009-02-05 06:50:53 UTC (rev 4050) @@ -0,0 +1,102 @@ +using System; +using System.Collections; +using NHibernate.Cfg; +using NHibernate.Dialect; +using NUnit.Framework; + +namespace NHibernate.Test.NHSpecificTest.FileStreamSql2008 +{ + /// <summary> + /// Workaround to use FileStream feature + /// http://blogs.msdn.com/manisblog/archive/2007/10/21/filestream-data-type-sql-server-2008.aspx + /// </summary> + [TestFixture] + public class Fixture : TestCase + { + protected override IList Mappings + { + get { return new[] {"NHSpecificTest.FileStreamSql2008.Mappings.hbm.xml"}; } + } + + protected override string MappingsAssembly + { + get { return "NHibernate.Test"; } + } + + protected override bool AppliesTo(Dialect.Dialect dialect) + { + return dialect is MsSql2008Dialect; + } + + protected override void Configure(Configuration cfg) + { + //Points to the database created with FileStream Filegroup. + cfg.Properties["connection.connection_string"] = + @"Data Source=localhost\SQLEXPRESS;Initial Catalog=FileStreamDB;Integrated Security=True;Pooling=False"; + + #region CREATE DATABASE example +/* + CREATE DATABASE FileStreamDB ON PRIMARY + ( NAME = FileStreamDB_data, + FILENAME = N'C:\FSDemo\FileStreamDB_data.mdf', + SIZE = 10MB, + MAXSIZE = 50MB, + FILEGROWTH = 10%), + FILEGROUP RowGroup1 + ( NAME = FileStreamDB_group1, + FILENAME = N'C:\FSDemo\FileStreamDB_group1.ndf', + SIZE = 10MB, + MAXSIZE = 50MB, + FILEGROWTH = 5MB), + FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM + ( NAME = FileStreamDBResumes, + FILENAME = N'C:\FSDemo\VendorCatalog') + LOG ON + ( NAME = 'FileStreamDB_log', + FILENAME = N'C:\FSDemo\FileStreamDB_log.ldf', + SIZE = 5MB, + MAXSIZE = 25MB, + FILEGROWTH = 5MB); +*/ +#endregion + } + + [Test] + public void SavingAndRetrieving() + { + Guid rowId = Guid.NewGuid(); + + var entity = new VendorCatalog + { + Name = "Dario", + CatalogID = rowId, + Catalog = Convert.ToBytes("Aqui me pongo a cantar...al compas de la viguela") + }; + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Save(entity); + tx.Commit(); + } + + VendorCatalog entityReturned = null; + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + entityReturned = s.CreateQuery("from VendorCatalog").UniqueResult<VendorCatalog>(); + + Assert.AreEqual("Dario", entityReturned.Name); + Assert.AreEqual(rowId.ToString(), entityReturned.CatalogID.ToString()); + Assert.AreEqual("Aqui me pongo a cantar...al compas de la viguela",Convert.ToStr(entityReturned.Catalog)); + } + + using (ISession s = OpenSession()) + using (ITransaction tx = s.BeginTransaction()) + { + s.Delete(entityReturned); + tx.Commit(); + } + } + } +} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Mappings.hbm.xml (from rev 4046, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Mappings.hbm.xml) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/Mappings.hbm.xml 2009-02-05 06:50:53 UTC (rev 4050) @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + namespace="NHibernate.Test.NHSpecificTest.FileStreamSql2008" + assembly="NHibernate.Test"> + + <!-- Mapping the entity as usual --> + <class name="VendorCatalog"> + <id name="Id"> + <generator class="native"/> + </id> + <property name="Name"/> + <property name="CatalogID"/> + <property name="Catalog"/> + </class> + + <!-- + The workaround consist in alter the table with the special + columns needed to support the FileStream feature. + --> + <database-object> + <create> + <![CDATA[ + + ALTER TABLE VendorCatalog DROP COLUMN CatalogID + ALTER TABLE VendorCatalog ADD CatalogID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE + ALTER TABLE VendorCatalog DROP COLUMN Catalog + ALTER TABLE VendorCatalog ADD Catalog varbinary(max) FILESTREAM + + ]]> + </create> + <drop/> + </database-object> + +</hibernate-mapping> Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/VendorCatalog.cs (from rev 4046, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Person.cs) =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/VendorCatalog.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/FileStreamSql2008/VendorCatalog.cs 2009-02-05 06:50:53 UTC (rev 4050) @@ -0,0 +1,27 @@ +using System; + +namespace NHibernate.Test.NHSpecificTest.FileStreamSql2008 +{ + public class VendorCatalog + { + /// <summary> + /// Usual Object Id, nothing weird + /// </summary> + public virtual int Id { get; set; } + + /// <summary> + /// Simple string property, nothing weird + /// </summary> + public virtual string Name { get; set; } + + /// <summary> + /// Represents the mandatory UNIQUEIDENTIFIER ROWGUIDCOL + /// </summary> + public virtual Guid CatalogID { get; set; } + + /// <summary> + /// FileStream property + /// </summary> + public virtual Byte[] Catalog { get; set; } + } +} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-05 04:59:33 UTC (rev 4049) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-02-05 06:50:53 UTC (rev 4050) @@ -390,6 +390,9 @@ <Compile Include="NHSpecificTest\Dates\FixtureBase.cs" /> <Compile Include="NHSpecificTest\Dates\DateTime2Fixture.cs" /> <Compile Include="NHSpecificTest\Dates\DateTimeAssert.cs" /> + <Compile Include="NHSpecificTest\FileStreamSql2008\VendorCatalog.cs" /> + <Compile Include="NHSpecificTest\FileStreamSql2008\Fixture.cs" /> + <Compile Include="NHSpecificTest\FileStreamSql2008\Convert.cs" /> <Compile Include="NHSpecificTest\Futures\FutureQueryFixture.cs" /> <Compile Include="NHSpecificTest\Futures\FutureCriteriaFixture.cs" /> <Compile Include="NHSpecificTest\Futures\Person.cs" /> @@ -1629,6 +1632,7 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\FileStreamSql2008\Mappings.hbm.xml" /> <EmbeddedResource Include="Generatedkeys\Seqidentity\MyEntity.hbm.xml" /> <EmbeddedResource Include="IdGen\NativeGuid\NativeGuidPoid.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\Dates\Mappings\Time.hbm.xml" /> @@ -1753,4 +1757,4 @@ if exist "$(ProjectDir)hibernate.cfg.xml" (copy "$(ProjectDir)hibernate.cfg.xml" "hibernate.cfg.xml") copy /y "..\..\..\NHibernate.DomainModel\ABC.hbm.xml" "ABC.hbm.xml"</PostBuildEvent> </PropertyGroup> -</Project> \ No newline at end of file +</Project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |