Hi,
I'm following along with http://summerofnhibernate.com/ and I'm up to
Session 04. I am trying to test for an ExpectedException when I insert
a string that is too big for the database column. I have a varchar(10)
column in the database and I'm inserting a 20-char string with this
code:
private Market BuildInvalidMarket()
{
return new Market("THIS IS TOO LONG FOR A SYMBOL","This
will not save");
}
[Test]
[ExpectedException(typeof(NHibernate.HibernateException))]
public void AddMarketThrowsExceptionOnFail()
{
_provider.AddMarket(BuildInvalidMarket());
}
Here's the method in the data access layer:
public void AddMarket(Market mkt)
{
using (ISession session = GetSession())
{
using (ITransaction tx = session.BeginTransaction())
{
try
{
session.Save(mkt);
session.Flush();
tx.Commit();
}
catch (HibernateException)
{
tx.Rollback();
throw;
}
}
}
}
The test fails because the string does get to the database, but it is
truncated. Why is Hibernate truncating the string before inserting it
to the database? I don't want it to do that.
Here's the database table:
CREATE TABLE [dbo].[markets](
[symbol] [varchar](10) NOT NULL,
[description] [varchar](30) NOT NULL,
CONSTRAINT [PK_markets] PRIMARY KEY CLUSTERED
(
[symbol] ASC
)
and the mapping file:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MooDB"
namespace="MooDB.BusinessLayer">
<class name="MooDB.BusinessLayer.Market" table="markets">
<id name="Symbol" column="symbol" type="string" length="10" />
<property name="Description" column="description"
type="string" length="30" not-null="true" />
</class>
</hibernate-mapping>
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.