Вставить нового родителя / ребенка с помощью WCF Data Services - PullRequest
2 голосов
/ 02 марта 2011

Например, у меня есть таблица контактов, связанная с адресами.Для связи с базой данных я использую WCF Data Services.У меня есть форма, где есть контактная информация со списком возможных адресов.Сейчас я создаю список «Адреса для вставки» и вставляю контакт, используя (контекст здесь контекст данных сущности):

context.AddToContact(contact);
context.SaveChanges();

После этого я могу получить вставленный contact.ID и добавить его какродительский идентификатор для всех адресов в списке адресов:

cacheAddressList.ForEach(a =>
                        {
                            address.ContactID = contact.ID;
                            context.AddToAddress(address);
                        }
                        );
context.SaveChanges();

Так что мне нужно сделать 2 вставки.
Я знаю, что в Entity Framework я могу добавить детей к родителю, если у меня есть свойства навигации между ними,В моем случае у меня действительно есть навигация, но такой код не работает (контакт еще не сохранен ..):

 context.AddToContact(contact);
 cacheAddressList.ForEach(a =>
                            {
                                address.Contact = contact;
                            }
                            );
 context.SaveChanges();

Можно ли здесь вставить всех детей и родителей в одну транзакцию?Потому что, если это возможно - мне не нужно создавать все эти списки детей, чтобы добавить их после родительской вставки.

1 Ответ

5 голосов
/ 02 марта 2011

Вот пример кода для этого:

context.AddToContact(contact);
cacheAddressList.ForEach(a => 
    {
        address.Contact = contact;
        context.SetLink(address, "Contact", contact);
    });

context.SaveChanges(SaveChangesOptions.Batch);

Надеюсь, это поможет. Спасибо Pratik

...