Я пытаюсь разработать систему, которая имеет 2 уровня: мобильный клиент и сервер, который использует LINQ to SQL для хранения информации в базе данных.Я хочу создать сервер WCF, который будет хранить задачу на сервере, поэтому он получит задачу от клиента и будет использовать LINQ to SQL для ее хранения.
Чтобы сделать эту службу, я создал файл dbml.Таким образом, я могу использовать текст данных.
Это мой метод обслуживания:
public Task SaveTask(string token, Task task)
{
TrackingDataContext dataConext = new TrackingDataContext();
//Saves/Updates the task
dataConext.Tasks.InsertOnSubmit(task);
dataConext.SubmitChanges();
return task;
}
токен будет использоваться в будущем
И это мой метод клиента,который вызовет службу:
private void btnSave_Click(object sender, EventArgs e)
{
//Populate the object with the info
Task task = new Task();
task.Title = tbTitle.Text;
task.Description = tbDescription.Text;
//this is a FK to another table
task.Severity = ((Severity)lbSeverities.SelectedItem);
//the first state: "open"
task.StateID = 1;
//Save the task
client.SaveTaskCompleted += new EventHandler<SaveTaskCompletedEventArgs>(client_SaveTaskCompleted);
client.SaveTaskAsync(App.Token, task);
}
Как вы можете видеть, я создаю новый объект, заполняю его и отправляю его в мой сервис, который получит его и сохранит.Теоретически это будет работать нормально.
Клиент может создать объект и отправить его на сервер.Когда сервер получает запрос, он пытается построить объект снова, но затем я получаю исключение System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException в этом методе (создается автоматически из VS2010):
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SeverityID", DbType="Int NOT NULL")]
public int SeverityID
{
get
{
return this._SeverityID;
}
set
{
if ((this._SeverityID != value))
{
if (this._Severity.HasLoadedOrAssignedValue)
{
throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}
this.OnSeverityIDChanging(value);
//The exception happens in this line
this.SendPropertyChanging();
this._SeverityID = value;
this.SendPropertyChanged("SeverityID");
this.OnSeverityIDChanged();
}
}
}
Не можетбыть любой ошибкой в моем методе сервера, потому что: 1 - это очень просто и не имеет логики внутри 2 - я даже не могу отладить его, ошибка происходит до того, как мой метод вызывается, вероятно, при демонтаже запроса.
Что может случиться что-то подобное?Где я могу посмотреть?Может ли это быть проблемой конфигурации?
Спасибо, Оскар
Редактировать: нашел эту ссылку Сериализация Linq2Sql поверх Wcf - ошибка или недоразумение? , где говорят, что этоошибка, но это с 1 года назад.Кто-нибудь знает, было ли это решено?