EF 4.1如何将Web服务返回的图形合并到现有上下文中

时间:2011-06-14 05:10:33

标签: entity-framework entity-framework-4.1

我有一个场景,我需要将Web服务返回的大图(超过2000个实体)合并到现有的DbContext中。所以,我的第一次尝试:

    ' get new object from web service
    Dim newCust = DAL.GetCustomer(ActiveCustomerView.CustomerID)

    ' attach the object graph into existing context
    context.Customers.Attach(newCust)

如果我尝试附加包含上下文中已存在的实体的对象,则会产生重复冲突。

为了避免这个问题,我正在清除本地数据,然后在附加之前调用AcceptAllChanges:

        context.Orders.Local.Clear()
        context.OrderItems.Local.Clear()
        context.Messages.Local.Clear()
        context.Contacts.Local.Clear()
        context.Parcels.Local.Clear()
        context.CustomerTransactions.Local.Clear()
        context.ReturnedParcels.Local.Clear()
        context.ReturnedOrderItems.Local.Clear()
        context.InventoryItems.Local.Clear()
        context.Shippments.Local.Clear()
        context.Prints.Local.Clear()

        DirectCast(context, IObjectContextAdapter).ObjectContext().AcceptAllChanges()

这样可行,但性能不可接受,因为清除数据需要40秒。

有没有其他方法可以有效地实现这一目标? 我可以以某种方式处理DbSet清除它们的状态吗?

每次我需要附加图形时,我都无法销毁和创建新的上下文,因为它包含其他可能丢失的对象。

0 个答案:

没有答案