2011-04-28 2 views
0

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

Есть ли общий способ поместить эти объекты в соответствующий контейнер 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>); 
} 

ответ

1

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

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

0

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

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

+0

Веб-сервис поддерживается другой компанией, поэтому изменение службы не является вариантом. –

Смежные вопросы