2010-04-07 109 views
3

我很難試圖讓我的存儲過程適用於NHibernate。從SP返回的數據不對應任何數據庫表。NHibernate存儲過程問題

這是我的映射文件:

<?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沒有添加到persist字典中,因爲沒有在hbm.xml中定義的類映射(只有sql-query)。後來在CheckNamedQueries函數中,它無法找到SomeClass的persistor。

我已經檢查了所有顯而易見的東西(例如,將hbm作爲嵌​​入式資源),我的代碼與我在網上找到的其他樣本沒有太大差別,但不知何故,我無法使其工作。任何想法我能如何解決這個問題?

回答

0

看看使用subselect塊的類映射。我在Java文檔中發現了它,但也許它也適用於.Net。 (向下滾動到第5.1.3節)