Проблема с хранимой процедурой NHibernate - PullRequest
3 голосов
/ 07 апреля 2010

Я с трудом пытаюсь заставить мою хранимую процедуру работать с 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 ]

7 голосов
/ 07 апреля 2010

Ну, а где ваше отображение классов для SomeClass?

Вам все еще нужно отобразить его.Читать http://nhibernate.info/doc/nh/en/index.html#querysql-load.

0 голосов
/ 07 апреля 2010

Посмотрите на использование сопоставления классов с блоком subselect. Я нашел это в документации по Java, но, возможно, это будет работать и для .Net.

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html (прокрутите вниз до раздела 5.1.3)

...