2011-12-06 96 views
0

我有以下方法:NHibernate的SQL查詢XML結果來作爲字符串

public XmlElement FullSetXML(Guid ReviewUID) 
    { 
     using (ISession session = sessionManager.OpenSession()) 
     { 
      IQuery query = session.CreateSQLQuery("exec rcs.ReviewFullSetXML ?"); 
      query.SetGuid(0, ReviewUID); 
      return (XmlElement)query.UniqueResult(); 
     } 
    } 

存儲過程返回的XML,但它是通過這裏作爲一個字符串來。結果我收到以下錯誤:

Unable to cast object of type 'System.String' to type 'System.Xml.XmlElement' 

誰能告訴我,我是缺少在這裏得到這個返回作爲的XMLElement?

回答

0

如果您的存儲過程返回的XML字符串,這樣的事情可以幫助:

public XmlDocument FullSetXML(Guid ReviewUID) 
{ 
    using (ISession session = sessionManager.OpenSession()) 
    { 
     IQuery query = session.CreateSQLQuery("exec rcs.ReviewFullSetXML ?"); 
     query.SetGuid(0, ReviewUID); 
     var xmlString = query.UniqueResult().ToString(); 

     var xmlDoc = XmlDocument(); 
     doc.LoadXml(xmlString); 
     return doc; 
    } 
} 

否則,如果你需要加載一個SQL Server XML數據類型,看看here
在這種情況下,您必須使用不帶NHibernate對象的SqlCommandSqlDatareader:只需從session.Connection中獲取連接引用(您必須執行強制轉換爲SqlConnection)。

如果你需要映射一個字段(似乎不是你的情況),看看here
我從來沒有嘗試過,如果你可以使用自定義IUserType在一個「SqlQuery」與UniqueResult<..>():這可能值得一試..