Добавление объекта в метод вставки службы домена - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть две сущности, Parent и Child, на стороне клиента я создаю Parent, а затем вызываю context.submitChanges

На стороне сервера в InsertParent(Parent parent) я делаю:

InsertParent(Parent parent)
{
   Child child = this.ObjectContext.Childs.CreateObject();
   parent.child = child;

   if ((parent.EntityState != EntityState.Detached))
   {
     this.ObjectContext.ObjectStateManager.ChangeObjectState(parent, EntityState.Added);
   }
   else
   {
    this.ObjectContext.Parents.AddObject(parent);
   }
}

Теперь у меня две проблемы.

До if if, Parent.id равно 0 и после 0, но в базе данных оно заполнено.

Другой, Child спасен, но Child.ParentId равен 0.

Я не понимаю, почему.

Какой правильный способ достижения этого поведения? Должен ли я вызвать SaveChanges() непосредственно в контексте?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Убедитесь, что свойство StoreGeneratedPattern для Parent.Id в вашем edmx установлено на Identity.Это должно гарантировать, что он будет обновлен с новым значением на вставках.

Я бы также включил это в транзакцию, чтобы вы могли добавить своего ребенка после того, как родительский идентификатор установлен.

0 голосов
/ 23 сентября 2011

Да, вы должны использовать SaveChanges () , потому что именно это сохраняет ваши данные в базе данных.

Очень простой пример

Вам также необходимо проверить столбец parent.Id и столбец Id потомков, чтобы они были определены как идентификаторы и первичные ключи, а также отношения между двумя таблицами.

...