web服务中的更改不会反映在客户端
本文关键字:客户端 服务 web | 更新日期: 2023-09-27 18:06:11
我使用WCF-webservice和Linq-To-SQL
来插入一个新记录。
然而,在webservice中,我设置了两个字段,CreatedBy
和Created
,但即使我使用ref
参数(如MSDN上建议的),更改也不会反映在客户端。因此,当我调试服务时,属性被设置,记录被正确插入,但在调用方法中,对象的属性仍然未设置。
这将导致以后的问题,例如,如果我试图删除它,我会得到以下异常在db.SubmitChanges()
,因为这些列是non-null
:
下面是客户端(winforms应用程序)的插入方法:System.Data.SqlTypes。SqlTypeException: SqlDateTime overflow。必须从1753年1月1日12:00:00 AM到9999年12月31日11:59:59 PM
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();
}
这是webservice方法:
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技能生疏了(这就是我选择它们的原因)。
在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();
}