Web服务的变化没有反映在客户端?

时间:2013-03-26 17:28:59

标签: c# winforms linq-to-sql data-binding

我正在使用WCF-webservice和Linq-To-SQL来插入新记录。

但是,在网络服务中,我设置了两个字段CreatedByCreated,但即使我使用ref参数(如建议的on MSDN),更改也是没有反映在客户端。因此,当我调试服务时,设置属性并正确插入记录,但在调用方法时,对象的属性仍未设置。

这会在以后导致问题,例如,如果我尝试删除它,我会在db.SubmitChanges()处获得以下异常,因为这些列是non-null

  

System.Data.SqlTypes.SqlTypeException:SqlDateTime溢出。一定是   在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。

这是客户端的插入方法(winforms应用程序):

private void Add_Status()
{
    using (var db = new ERP_ServiceClient())
    {
        var status = new Erp_ServiceReference.Status();
        status.Name = this.txtStatusNameAdd.Text;
        db.InsertStatus(status, this.IdUser);
        statusBindingSource.Add(status);
    }

    this.txtStatusNameAdd.Text = "";
    this.txtStatusNameAdd.Select();
}

这是网络服务方法:

public void InsertStatus(ref Status status, int userID)
{
    using (var db = new ERPDataContext())
    {
        status.CreatedBy = userID;
        status.Created = DateTime.Now;
        db.Status.InsertOnSubmit(status);
        db.SubmitChanges();
    }
}

我做错了什么?我的wcf,winforms和linq-to-sql技能都生锈了(这就是我选择它们的原因)。

1 个答案:

答案 0 :(得分:1)

您无法通过Web服务中的引用传递。您可以返回该值。

public Status InsertStatus(Status status, int userID)
{
    using (var db = new ERPDataContext())
    {
        status.CreatedBy = userID;
        status.Created = DateTime.Now;
        db.Status.InsertOnSubmit(status);
        db.SubmitChanges();
        return status;
    }
}

private void Add_Status()
{
    using (var db = new ERP_ServiceClient())
    {
        var status = new Erp_ServiceReference.Status();
        status.Name = this.txtStatusNameAdd.Text;
        status = db.InsertStatus(status, this.IdUser);
        statusBindingSource.Add(status);
    }

    this.txtStatusNameAdd.Text = "";
    this.txtStatusNameAdd.Select();
}