将SOAP对象转换为EF表用于数据库插入

本文关键字:用于 数据库 插入 EF SOAP 对象 转换 | 更新日期: 2023-09-27 17:53:24

我有一个从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>);
}

将SOAP对象转换为EF表用于数据库插入

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

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

你能做的就是调整webservice,这样他就已经创建了你的EF对象,你可以直接将其添加到你的实体上下文中(带有attach)。但是这意味着你的webservice必须知道你的EF类型。

如果这是不适用的,你必须创建你的对象…