将SOAP对象转换为EF表以进行数据库插入

时间:2011-04-28 14:32:42

标签: c# web-services entity-framework soap entity-framework-4

我有一个从Web服务返回的自定义对象数组。 对象在数据库中建模,我已经使用模型创建了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 个答案:

答案 0 :(得分:1)

通用方法是使用AutoMapper,但即使这个解决方案也会有一些限制,具体取决于返回和持久对象之间的差异。手动解决方案是适配器模式 - 也许这个解决方案也可以通过编写自定义T4模板自动完成,但同样取决于返回和持久对象之间的差异。另一种可能性是重写反序列化,以便创建类的实例而不是自动生成的类(这主要意味着创建自定义代理)。

所以有办法做到这一点,但它们严格依赖于返回和持久对象之间的差异以及模式。如果差异在所有相关类别中没有相同的症状,则几乎无法进行任何自动化。

答案 1 :(得分:0)

您可以做的是调整Web服务,以便他创建您的EF对象,您可以直接添加到您的实体上下文(使用attach)。但这意味着您的网络服务必须知道您的EF类型。

如果这不适用,则必须创建对象......