我正在使用WCF-webservice和Linq-To-SQL
插入新记录。webservice中的更改未反映在客户端上?
然而,在web服务我设置两个字段,CreatedBy
和Created
,但即使我使用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技能都很生疏(这就是我选择它们的原因)。
我的猜测是,即使通过状态标记为ref,Web服务不会传回该值。你尝试过只返回那个值吗? – Rob 2013-03-26 17:33:41
我认为这是不可能的..你需要检索回数据.. – 2013-03-26 17:35:36
检查此:http://stackoverflow.com/questions/2882178/designing-wcf-interface-no-out-or-ref-parameters – 2013-03-26 17:40:15