У меня установлены отношения один ко многим.(Например, Человек со многими телефонными номерами).В моем запросе get у меня есть this.ObjectContext.Person.Include("PhoneNumbers")
и сгенерированные метаданные, включая public EntityCollection<PhoneNumbers> PhoneNumbers{ get; set; }
. Я также установил DTO с этим и другими необходимыми мне свойствами.
[Include]
[Association("Name","thisKey","otherKey")]
public IEnumerable<PhoneNumbers> PNums { get; set; }
Я могу получить все данные в порядке,и отображать его в серебряном свете, но когда я создаю новый, у меня возникают проблемы.У меня происходит такая вещь:
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (dgMMs.SelectedItem != null)
{
PhoneNumbers wb = new PhoneNumbers ();
wb.this = tbThis.Text;
wb.that = tbThat.Text;
wb.other = tbOther.Text;
wb.whatnot = tbwhatnot.Text;
((Person)dgMMs.SelectedItem).PNums.Add(wb);
}
}
Затем я получаю эту ошибку при вызове TDataSource.SubmitChanges();
:
Message = "Отправить операцию не удалось проверить. Пожалуйста, проверьтеEntity.ValidationErrors для каждой сущности в EntitiesInError для получения дополнительной информации. "
Хорошо, я сделал это, и, конечно же, есть ошибка, но я не совсем понимаю, почему.У меня есть необнуляемое поле в базе данных для поля last_modified_by, которое я не установил, когда создавал и добавлял его в entityCollection, и я предполагаю, что это будет причиной, но мой вопрос возникает из-за того, почему RIA не делаетвызовите мой метод Insert в моем сервисе, который я создал, потому что я хочу установить это поле там.Примерно так:
public void InsertPhoneNumber(PhoneNumbers pnum)
{
pnum.last_modified = DateTime.Today;
pnum.last_modified_by = Thread.CurrentPrincipal.Identity.Name;
if ((pnum.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(pnum, EntityState.Added);
}
else
{
this.ObjectContext.PhoneNumbers.AddObject(pnum);
}
}
Но RIA добавляет мой объект и вызывает его собственный метод Insert.Поэтому я сначала свернул с ним и просто установил свойство в пользовательском интерфейсе, а затем он выдал бы мне следующую ошибку:
Message = "Ошибка операции отправки. Произошла ошибка при обновлении записей.Подробности см. Во внутреннем исключении. Внутреннее сообщение об исключении: Невозможно вставить явное значение для столбца идентификаторов в таблице 'iset_trkr_writeback', когда для IDENTITY_INSERT задано значение OFF. "
Я никогда не устанавливал в поле идентификаторов что-либо, ядумал, что РИА сделает это для меня.Но когда я отлаживаю и смотрю, это имеет 0 для значения.Но, по крайней мере, на этот раз он вызывает мой метод вставки в моем сервисе ... Может быть, я что-то упустил для своего процесса, но я действительно мог бы использовать некоторую помощь.Спасибо :)