C# 获得;ExecuteXmlReader:连接属性尚未初始化";使用企业图书馆5.0

C# 获得;ExecuteXmlReader:连接属性尚未初始化";使用企业图书馆5.0,c#,xml,c#-4.0,wcf-client,enterprise-library-5,C#,Xml,C# 4.0,Wcf Client,Enterprise Library 5,我有以下代码: public string GetClients() { string outputxml = string.Empty; Database db = DatabaseFactory.CreateDatabase("MyDatabase"); SqlCommand sqlcmd = db.GetSqlStringCommand("SELECT CLIENTID, CLIENTNAME FROM [CLIENTS] FOR X

我有以下代码:

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的配置文件中指定,并设置为默认数据库


我在这里做错了什么?谢谢你的社区

您是否尝试检查基础连接状态?您也可以尝试从那里打开它

你有:

   SqlCommand sqlcmd = db.GetSqlStringCommand("SELE..") as SqlCommand
您可以使用以下方法测试该命令:

(sqlcmd.Connection.State == ConnectionState.Open)
您也可以尝试直接打开连接:

sqlcmd.Connection.Open(); 

谢谢@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;         
}
}