2013-03-26 65 views
0

我正在使用WCF-webservice和Linq-To-SQL插入新记录。webservice中的更改未反映在客户端上?

然而,在web服务我设置两个字段,CreatedByCreated,但即使我使用ref参数(如建议on MSDN)所做的更改不会在客户端反映出来。所以当我调试服务的属性设置和记录插入正确,但在调用方法对象的属性仍然未设置。

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

System.Data.SqlTypes.SqlTypeException:SQLDATETIME溢出。 2017年1月1日下午12:00:00至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(); 
} 

这是Web服务的方法:

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

我的猜测是,即使通过状态标记为ref,Web服务不会传回该值。你尝试过只返回那个值吗? – Rob 2013-03-26 17:33:41

+0

我认为这是不可能的..你需要检索回数据.. – 2013-03-26 17:35:36

+0

检查此:http://stackoverflow.com/questions/2882178/designing-wcf-interface-no-out-or-ref-parameters – 2013-03-26 17:40:15

回答

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(); 
} 
+0

您的已删除答案已接近。其实我忘了刷新服务引用,因此我没有得到一个编译器错误,参数必须是'ref'。 +1的努力,谢谢。 – 2013-03-27 08:48:40

相关问题