Службы данных WCF сохраняют реляционные объекты - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь сохранить объект обратно в базу данных через WCF, вот так (псевдокод):

var Contact = new Contact
{
    Id = Guid.NewGuid(),
    Name = "Test",
    Address = new Address
    {
        Id = Guid.NewGuid(),
        Postcode = "blah"
    }
};

В моей модели отношение 1 к 1 с контактами и адресами, но при этомтерпит неудачу:

DB.AddToContacts(Contact);
DB.SaveChanges();

Жалуется, что отношения не выполнены и не могут быть пустыми.Поэтому я попробовал этот подход:

DB.AddToContacts(Contact);
DB.AddToAddresses(Contact.Address);
DB.AddRelatedObject(Contact, "Address", Contact.Address);
DB.SaveChanges();

, но теперь я получаю «Метод AddRelatedObject работает только тогда, когда sourceProperty является коллекцией.».

Мой вопрос: как сохранить обратно связанную сущностьлегко через WCF?

Ответы [ 2 ]

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

Я наконец заставил его работать следующим образом:

DB.AddToAddresses(Client.Address);
DB.AddToClients(Client);

DB.SetLink(Client, "Address", Client.Address);

DB.SaveChanges();

Это 4 отдельных вызова по проводам в службу WCF для добавления реляционного объекта.В конце всего этого я сделаю 14 звонков, ек!

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

Возможно, это не лучший ответ, но он сработал для меня ... При попытке создать связанный объект в службах данных WCF необходимо вручную установить «обратную ссылку» (в этом случае поведение отличается отнормальное использование EF) ..

Итак, в вашем случае вам нужно установить sth как:

var Contact = new Contact
{
  Id = Guid.NewGuid(),
  Name = "Test",
  Address = null
};

var address = new Address
{
      Id = Guid.NewGuid(),
      Postcode = "blah",
      // This is important
      Contact = Contact
};

contact.Address = address;
DB.AddToContracts(Contract);
DB.SaveChanges();

Это довольно раздражает ... И, как я получил этот опыт,«сложный» путь. Службы данных WCF работают медленно, так как s ** t, и выбор иерархических данных (таких как Order - OrderPosition - Product) - реальная проблема ... Вы можете рассмотреть использование sth.отличается для сценариев, связанных с задержкой ...

...