我有一个从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>);
}
答案 0 :(得分:1)
通用方法是使用AutoMapper,但即使这个解决方案也会有一些限制,具体取决于返回和持久对象之间的差异。手动解决方案是适配器模式 - 也许这个解决方案也可以通过编写自定义T4模板自动完成,但同样取决于返回和持久对象之间的差异。另一种可能性是重写反序列化,以便创建类的实例而不是自动生成的类(这主要意味着创建自定义代理)。
所以有办法做到这一点,但它们严格依赖于返回和持久对象之间的差异以及模式。如果差异在所有相关类别中没有相同的症状,则几乎无法进行任何自动化。
答案 1 :(得分:0)
您可以做的是调整Web服务,以便他创建您的EF对象,您可以直接添加到您的实体上下文(使用attach)。但这意味着您的网络服务必须知道您的EF类型。
如果这不适用,则必须创建对象......