Получение «ExecuteXmlReader: свойство подключения не было инициализировано» с использованием Enterprise Library 5.0 - PullRequest
0 голосов
/ 02 марта 2012

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

public string GetClients()
    {
        string outputxml = string.Empty;
        Database db = DatabaseFactory.CreateDatabase("MyDatabase");
        SqlCommand sqlcmd = db.GetSqlStringCommand("SELECT CLIENTID, CLIENTNAME FROM [CLIENTS] FOR XML AUTO, ELEMENTS") as SqlCommand;
        using (XmlReader reader = sqlcmd.ExecuteXmlReader()) //Exception thrown in this line
        {
            while (reader.Read())
            {
                outputxml = reader.ReadOuterXml();
            }
            return outputxml;
        }
    }

Этот метод является частью упражнения, которое я выполняю как часть самостоятельного обучения WCF.

При вызове этого метода из клиентского приложения WCF я получаю ошибку, упомянутую в теме этого поста, в месте, отмеченном выше. Строка подключения к базе данных указывается в файле конфигурации для MyDatabase, а также устанавливается в качестве базы данных по умолчанию.

Что я здесь делаю неправильно? Спасибо сообществу SOF.

Ответы [ 2 ]

0 голосов
/ 03 марта 2012

Спасибо @ t3rse.Я понял, что не так.Вот тот же код, переписанный:

 public string GetClients()    
{         
string outputxml = string.Empty;         
Database db = DatabaseFactory.CreateDatabase("MyDatabase");         
SqlCommand sqlcmd = db.GetSqlStringCommand("SELECT CLIENTID, CLIENTNAME FROM [CLIENTS] FOR XML AUTO, ELEMENTS") as SqlCommand;         
using (XmlReader reader = db.ExecuteXmlReader(sqlcmd)) 
{             
  while (reader.Read())             
  {                 
    outputxml = reader.ReadOuterXml();             
  }             
return outputxml;         
}
} 
0 голосов
/ 03 марта 2012

Вы пытались проверить состояние основного соединения? Вы также можете попытаться открыть его оттуда.

У вас есть:

   SqlCommand sqlcmd = db.GetSqlStringCommand("SELE..") as SqlCommand

Вы можете проверить команду с помощью:

(sqlcmd.Connection.State == ConnectionState.Open)

Вы также можете попробовать открыть соединение напрямую:

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