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