Web服务运行但未插入数据库记录

时间:2012-02-06 15:34:20

标签: c# web-services asmx

我有一个正在调用的C#asmx Web服务,我看到结果在客户端上返回,所以我知道代码运行完成而没有抛出任何异常。这是Web服务类:

namespace App_WebRole
{
    /// <summary>
    /// Summary description for SubscriptionStatus
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class SubscriptionStatus : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string HelloWorld()
        {
            DataSet1 dataSet = new DataSet1();
            DataSet1TableAdapters.StatusRequestsTableAdapter statusTableAdapter = new DataSet1TableAdapters.StatusRequestsTableAdapter();
            DataSet1.StatusRequestsRow newRow = dataSet.StatusRequests.NewStatusRequestsRow();
            newRow.ApplicationID = "Test";
            newRow.RequestDate = DateTime.Now;
            dataSet.StatusRequests.Rows.Add(newRow);
            dataSet.StatusRequests.AcceptChanges();
            statusTableAdapter.Update(dataSet);
            return "Hello World 2";
        }
    }
}

我在我的机器上本地运行本地SQL Server Express数据库,我没有看到任何记录被插入到相应的表中。

如果我更改了返回值,我确实在客户端看到了更改的值。另外,我查看了本地网站目录中的web.config文件,它具有本地SQL Server Express数据库的连接字符串。

2 个答案:

答案 0 :(得分:1)

在更新之前接受更改将导致更新无法查看任何需要更新的内容。删除dataSet.StatusRequests.AcceptChanges();行。更新将在您完成后接受更改。

答案 1 :(得分:0)

实际上,为了实现这一点,我在应用程序中使用DataSet(.xsd)而不是使用LINQ to SQL类(.dbml)。詹姆斯的回答实际上可能已经完成了这个伎俩,但是当他发布它时,我已经将它转换为dbml并让它像魅力一样工作。