开发者

Pass a Guid to NHibernate's ISession.Get<T> method

开发者 https://www.devze.com 2023-03-15 18:15 出处:网络
I\'m experiencing with NHibernate 3.1.0 (without Fluent yet) on an existing solution in VS2010. Our DB is MsSql 2008 (I\'m using NHibernate.Dialect.MsSql2008Dialect in the cfg.xml file).

I'm experiencing with NHibernate 3.1.0 (without Fluent yet) on an existing solution in VS2010. Our DB is MsSql 2008 (I'm using NHibernate.Dialect.MsSql2008Dialect in the cfg.xml file).

I have an ValidationActivity object which I'd like to get from the DB. It has an ActivityID column of type uniqueidentifier (in the DB) / Guid (in the business object).

I've been following Summer Of NHibernate's 1st session so my provider is:

public ValidationActivity GetActivityById(Guid activityGuid)

{

var sessionFactory = new configuration().Configure().BuildSessionFactory();

var session = sessionFactory.OpenSession();

return session.Get<ValidationActivity>(activityGuid);

}

My mapping uses the guid generator:

<id name="ActivityID" type="Guid">

<generator class ="guid"/>

</id>

To test that, I created a test that tries to get an activity with a known Guid (one that I've inserted manually) as follows:

NHibernateDataProvider provider = new NHibernateDataProvider();

Guid g开发者_StackOverflow社区uid = new Guid("885f380d-c6e3-459e-8cff-10f96f26cc0a");

Activity testActivity = provider.GetActivityById(guid);

The exception thrown is 'Could not load entity' with the following SQL string:

SELECT validation0_.ActivityID as ActivityID0_0_, validation0_.ActivityName as Activity2_0_0_, validation0_.CreationDate as Creation3_0_0_, validation0_.Owner as Owner0_0_, validation0_.Project as Project0_0_, validation0_.Step as Step0_0_ FROM Activities validation0_ WHERE validation0_.ActivityID=?

It seems to me that the '?' at the end is wrong, but I don't know what am I doing wrong.

Please help.

Thanks.


Take a look at this post with a similar problem: Mapping Error in NHibernate

Have you tried to run the query above replacing the ? with the actual guid in the database that this test is hitting? Are all the column/table names the same? Seems like it could be a mapping issue.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号