簡體   English   中英

WCF中的C#列表問題

[英]C# list issue in WCF

我一直在研究wcf應用程序,並一直試圖從sql服務器數據庫返回名稱列表。 我的主要問題是我的select *語句僅返回列表的最后一個值。 這是代碼。

名稱型號:

public Name GetName()
    {

        Name name = new Name();

        using (SqlCommand objcmd = new SqlCommand("Select * from Names", sql))
        {
            SqlDataReader reader = objcmd.ExecuteReader();
            while (reader.Read())
            {
                name.NameID = reader.GetInt32(0);
                name.Name = reader["Name"].ToString();
            }
        }
        return name;
    }

.SVC:

public Name GetNames()
    {

        Name serviceName = new Name();
        NamesModel model = new NamesModel();
        Name modelName = model.GetName();
        serviceName.NameID = modelName.NameID;
        serviceName.Name = modelName.Name;

        model.Close();

        return serviceName;
    }

名稱服務:

[OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnames")]
    Name GetNames();

我嘗試將值打印到列表中,但是某處似乎斷開連接。 任何幫助都會很棒。 謝謝。

不確定,但是明確顯示的代碼不會返回任何列表。
我嘗試猜測您的意圖並建議以這種方式進行更改。

   public List<Name> GetNames() 
   { 

        List<Name> names = new List<Name>(); 

        using (SqlCommand objcmd = new SqlCommand("Select * from Names", sql)) 
        { 
            SqlDataReader reader = objcmd.ExecuteReader(); 
            while (reader.Read()) 
            { 
                Name name = new Name();
                name.NameID = reader.GetInt32(0); 
                name.Name = reader["Name"].ToString(); 
                names.Add(name);
            } 
        } 
        return names; 
    } 

.SVC:

    public List<Name> GetNames() 
    { 

        NamesModel model = new NamesModel(); 
        List<Name> names = model.GetNames(); 
        // ?? serviceName.NameID = modelName.NameID;  
        // ?? serviceName.Name = modelName.Name; 

        model.Close(); 

        return names; 
    } 

名稱服務:

[OperationContract] 
    [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnames")] 
    List<Name> GetNames(); 

您只會得到一個名字,因為您只會填寫一個名字。 您需要在while循環中填寫一個列表,然后將其返回。

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

模型:

public List<Name> GetNames()
{

    List<Name> names = new List<Name>();

    using (SqlCommand objcmd = new SqlCommand("Select * from Names", sql))
    {
        SqlDataReader reader = objcmd.ExecuteReader();
        while (reader.Read())
        {
            Name name = new Name();
            name.NameID = reader.GetInt32(0);
            name.Name = reader["Name"].ToString();
            names.Add(name);
        }
    }
    return names;
}

.SVC

public List<Name> GetNames()
{

    NamesModel model = new NamesModel();
    List<Name> serviceNames = model.GetNames();

    model.Close();

    return serviceNames;
}

名稱服務

[OperationContract] 
[WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "getnames")] 
List<Name> GetNames(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM