EF вставка связанных объектов - PullRequest
2 голосов
/ 14 марта 2009

Я использую клиент Silverlight с сервисами данных ado.net на платформе сущностей.

У меня есть контакт сущности и адрес сущности, связанный с кораблем связи с внешним ключом ... У контакта может быть 1 или более адресов, но для адреса всегда требуется как минимум 1 контакт. довольно простой ...

У меня есть репозиторий для моих контактов и адреса, который имеет метод Add (T entity), ...

На моем клиенте у меня есть форма, позволяющая пользователям добавлять контакт с адресом

и я хочу сохранить оба файла в базе данных ...

Address a = new Address();
a.Street="Street",
a.City = "City"
a.Contact = 
 new Contact(){ Name="Name",Age="60"}

_repository.Add(a);

....

Хорошо, я понял, что не могу сразу сохранить график связанных объектов, поэтому я сделал что-то подобное

DataBaseEntities.AddToContact(obj2Badded.Contact);
DataBaseEntities.AddToAddress(obj2Badded);
DataBaseEntities.SetLink(obj2Badded,"Contact",object2Badded.Contact);
DataBaseEinties.BeginSaveChanges(...)

Можно ли это сделать в переходах, например, если контакт не добавлен, адрес также не будет добавлен, и наоборот ...

... и все, что я пробовал, не работает ...

Было бы замечательно, если бы кто-то мог указать мне правильное направление в этой теме, я просто хочу добавить граф связанных объектов =} ...

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

У меня была похожая проблема, и она работала для меня после добавления что-то вроде

DatabaseEntities.UpdateObject(obj2Badded);

как раз перед

DatabaseEntities.BeginSavingChanged();

Это не требуется, если вы включаете edmx в свой проект и используете ObjectContext, но это необходимо, если вы создаете ссылку на службу и используете сгенерированный DataServiceContext.

0 голосов
/ 17 марта 2009

Ваш первый пример должен работать просто отлично, связанные сущности и все. Нет необходимости добавлять связанные объекты в контекст отдельно, если вы вставляете новые объекты для них обоих. Поэтому, если вы не сообщите нам, в чем проблема, когда вы запустили этот код, вам будет сложно помочь.

...