我正在使用WCF-webservice和Linq-To-SQL
来插入新记录。
但是,在网络服务中,我设置了两个字段CreatedBy
和Created
,但即使我使用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技能都生锈了(这就是我选择它们的原因)。
答案 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();
}