Проблема с хранимой процедурой NHibernate
Я с трудом пытаюсь заставить мою хранимую процедуру работать с NHibernate. Данные, возвращаемые из SP, не соответствуют ни одной таблице базы данных.
Это мой файл сопоставления:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DomainModel" namespace="DomainModel.Entities">
<sql-query name="DoSomething">
<return class="SomeClass">
<return-property name="ID" column="ID"/>
</return>
exec [dbo].[sp_doSomething]
</sql-query>
</hibernate-mapping>
Вот мой класс домена:
namespace DomainModel.Entities
{
public class SomeClass
{
public SomeClass()
{
}
public virtual Guid ID
{
get;
set;
}
}
}
Когда я запускаю код, он терпит неудачу с
Exception Details: NHibernate.HibernateException: Errors in named queries: {DoSomething}
на линии 80
Line 78: config.Configure(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NHibernate.config"));
Line 79:
Line 80: g_sessionFactory = config.BuildSessionFactory();
Когда я выполняю отладку в коде NHibernate, кажется, что SomeClass не добавляется в постоянный словарь, поскольку в hbm.xml не определено отображение классов (только sql-запрос). А позже в функции CheckNamedQueries он не может найти персистор для SomeClass.
Я проверил все очевидные вещи (например, сделать hbm встроенным ресурсом), и мой код не сильно отличается от других примеров, которые я нашел в Интернете, но почему-то я просто не могу заставить его работать. Любая идея, как я могу решить эту проблему?
2 ответа
Ну, а где ваше отображение классов для SomeClass?
Вам все еще нужно отобразить это. Прочитайте http://nhibernate.info/doc/nh/en/index.html.
Посмотрите на использование сопоставления классов с subselect
блок. Я нашел это в документации по Java, но, возможно, это будет работать и для.Net.
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html (прокрутите вниз до раздела 5.1.3)