Преобразование объекта SOAP в таблицу EF для вставки базы данных - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть массив пользовательских объектов, возвращаемых из веб-службы. Объекты моделируются в базе данных, и я создал файл EDMX с моделью.

Есть ли общий способ поместить эти объекты в соответствующий контейнер EF?

Существует около 50 различных типов объектов (по 20-30 членов в каждом), которые я вернул. Я бы не хотел создавать класс для преобразования каждого из них. Я пробовал несколько разных способов конвертации, но поскольку AddObject не принимает массив, я в тупике.

private MyEntities dbContext;
ResponseObject[] TheResponses;
using (MyWebService wsInstance = new MyWebService())
{
    TheResponses = wsInstance.DoStuff();
    dbContext = new MyEntities();

    dbContext.Table1of50.AddObject(<whatgoeshere>);
}

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Общий способ использует AutoMapper , но даже это решение будет иметь некоторые ограничения в зависимости от разницы между возвращаемым и сохраненным объектом.Ручное решение - это шаблон адаптера - возможно, это решение также может быть выполнено автоматически, написав собственный шаблон T4, но опять-таки оно зависит от разницы между возвращенным и сохраненным объектом.Другая возможность - переопределить десериализацию, так что ваши экземпляры ваших классов создаются вместо автоматически сгенерированных классов (это в основном означает создание собственного прокси).

Так что есть способы сделать это, но они строго зависят от разницы между возвращаемымсохранившиеся предметы и по образцу.Если различия не имеют одинаковых симптомов среди всех связанных пар классов, вы вряд ли сможете сделать какую-либо автоматизацию.

0 голосов
/ 28 апреля 2011

Что вы можете сделать, это настроить веб-сервис, чтобы он уже создавал ваши объекты EF, которые вы можете добавить непосредственно в контекст вашей сущности (с помощью attach). Но это означает, что ваш веб-сервис должен знать ваши типы EF.

Если это не применимо, вам придется создавать свои объекты ...

...