Я сталкиваюсь с NHibernate 3.1.0 (пока без Fluent) в существующем решении в VS2010.Наша БД MsSql 2008 (я использую NHibernate.Dialect.MsSql2008Dialect в файле cfg.xml).
У меня есть объект ValidationActivity, который я хотел бы получить из БД.У него есть столбец ActivityID типа uniqueidentifier (в БД) / Guid (в бизнес-объекте).
Я следил за 1-м сеансом Summer Of NHibernate, поэтому мой провайдер:
public ValidationActivity GetActivityById(Guid activityGuid)<br>
{<br>
var sessionFactory = new configuration().Configure().BuildSessionFactory();<br>
var session = sessionFactory.OpenSession();<br>
return session.Get<ValidationActivity>(activityGuid);<br>
}
В моем отображении используется генератор guid:
<id name="ActivityID" type="Guid"><br>
<generator class ="guid"/><br>
</id>
Чтобы проверить это, я создал тест, который пытается получить действие с известным Guid (который я вставил вручную) следующим образом:
NHibernateDataProvider provider = new NHibernateDataProvider();<br>
Guid guid = new Guid("885f380d-c6e3-459e-8cff-10f96f26cc0a");<br>
Activity testActivity = provider.GetActivityById(guid);
Выдается исключение «Не удалось загрузить объект» со следующей строкой SQL:
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=?
Мне кажется, что'?'в конце неправильно, но я не знаю, что я делаю неправильно.
Пожалуйста, помогите.
Спасибо.