簡體   English   中英

WCF Rest Service將Json對象列表作為參數

[英]WCF Rest Service to Take a list of Json Objects as parameter

我試圖使用WCF Rest服務將假日列表插入Oracle 12c DB內的假日表中。 運行服務時,沒有出現錯誤,但是運行服務時未插入數據。 我相信我的cmdStr和UpdateHoliday()有問題。 非常感謝任何幫助。 謝謝。

IService1.cs

public interface IService1
{
    [OperationContract()]
    [WebInvoke(UriTemplate = "UpdateHoliday", ResponseFormat = WebMessageFormat.Json, Method = "POST")]
    void UpdateHoliday(List<Holiday> Holidays);
}


[DataContract]
public class Holiday
{
    [DataMember(Order = 0)]
    public string HOLIDAY { get; set; }

    [DataMember(Order = 1)]
    public string DESCRIPTION { get; set; }

    public List<Holiday> Holidays { get; set; }
}

public class ListofHoliday
{
    [DataMember]
    List<Holiday> Holidays { get; set; }
}

Service1.cs

    public class Service1 : IService1
{
    public void UpdateHoliday(List<Holiday> Holidays)
    {
        List<ListofHoliday> firstStringList = new List<ListofHoliday>();
        string cmdStr = String.Format("INSERT INTO HOLIDAY (HOLIDAY, Description)" +
                                   " VALUES('HOLIDAY','Description')");

        foreach (var item in firstStringList)
        {
            (new DbHelper()).SqlExecute(cmdStr);
        }
    }


}

DbHelper.cs

 class DbHelper
    {
        private static string ConnectionString
        {
            get
            {
                return System.Configuration.ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
            }
        }

        public DataTable GetResultSet(string sql)
        {
            DataTable dt = new DataTable();
            using (OracleDataAdapter da = new OracleDataAdapter(sql, ConnectionString))
            {
                da.Fill(dt);
            }
            return dt;
        }

        public void SqlExecute(string sql)
        {
            using (OracleCommand cmd = new OracleCommand(sql, new OracleConnection(ConnectionString)))
            {
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

    }

我終於找到了使它工作的方法。 更改如下:Service1.cs

public class Service1 : IService1
{
    public void UpdateHoliday(List<Holiday> Holidays)
    {
        if (Holidays == null)
            throw new ArgumentNullException("Holidays");

        foreach (var item in Holidays)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("INSERT INTO HOLIDAY (HOLIDAY, DESCRIPTION) VALUES ");
            sb.AppendFormat("( '{0}', '{1}')",
                item.HOLIDAY, item.DESCRIPTION);
            //sb.AppendFormat(";");
            (new DbHelper()).SqlExecute(sb.ToString());
        }
    }


}

如何在服務操作中嘗試此代碼。 如果下面的代碼有效,那么您仍然需要做一些工作才能使DBHelper接受帶有參數的命令。

public class Service1 : IService1
{
    public void UpdateHoliday(List<Holiday> Holidays)
    {
        if(Holidays==null)
           throw new ArgumentNullException("Holidays");

        string cmdStr = String.Format("INSERT INTO HOLIDAY (HOLIDAY, Description)" +
                                   " VALUES('HOLIDAY','Description')");

        foreach (var item in Holidays)
        {
            (new DbHelper()).SqlExecute(cmdStr);
        }
    }


} 

暫無
暫無

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

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