Результат XML запроса NHibernate приходит в виде строки - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть следующий метод:

    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'

Может кто-нибудь сказать мне, что мне здесь не хватает, чтобы заставить это вернуться как элемент XMLE?

1 Ответ

0 голосов
/ 07 декабря 2011

Если ваша хранимая процедура возвращает 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, посмотрите здесь ,В этом случае вы должны использовать SqlCommand и SqlDatareader без объектов NHibernate: просто возьмите ссылку на соединение из вашего сеанса. Соединение (вы должны выполнить приведение к SqlConnection).

Если вам нужно отобразитьполе (кстати, похоже, не в твоем случае), взгляни здесь .Я никогда не пробовал, если вы можете использовать пользовательский IUserType в «SqlQuery» с UniqueResult<..>(): это может стоить попытки ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...