Я использую WCF-webservice и Linq-To-SQL
, чтобы вставить новую запись.Изменения в webservice не отражаются на клиенте?
Однако в WebService я устанавливаю два поля, CreatedBy
и Created
, но даже если я использую ref
параметр (как это было предложено on MSDN) изменения не отражаются на клиенте. Поэтому, когда я отлаживаю службу, свойства устанавливаются и запись вставлена правильно, но при вызывающем методе свойства объекта все еще не заданы.
Это вызовет проблемы в дальнейшем, например, если я буду пытаться удалить его, я буду получать следующее исключение при db.SubmitChanges()
поскольку эти столбцы являются non-null
:
System.Data.SqlTypes.SqlTypeException: переполнение SqlDateTime , Должно быть между 01.01.1753 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();
}
Это метод вебсервис:
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, веб-служба не передает это значение. Вы пытались просто вернуть эту ценность? – Rob
Я думаю, что это невозможно .. вам нужно получить данные обратно .. –
проверить это: http://stackoverflow.com/questions/2882178/designing-wcf-interface-no-out-or-ref-parameters –