Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将对象的跟踪信息从ObjectContext更改为另一个?_C#_Entity Framework_Orm_Objectcontext - Fatal编程技术网

C# 如何将对象的跟踪信息从ObjectContext更改为另一个?

C# 如何将对象的跟踪信息从ObjectContext更改为另一个?,c#,entity-framework,orm,objectcontext,C#,Entity Framework,Orm,Objectcontext,我有一个添加到objectContext的对象 在一些操作之后,我需要将其传递给同一数据库的另一个objectcontext,但我始终面临以下消息: 一个实体对象不能被多个IEntityChangeTracker实例引用 我需要更改跟踪信息,将其与旧对象分离,并将其附加到新的objectcontext 但是在新的作用域中,我没有旧的objectContext来分离它 我的问题:如何将此对象的跟踪信息更改为新的ObjectContext?当第一个上下文仍在范围内时,您必须将该实体从第一个上下文

我有一个添加到objectContext的对象

在一些操作之后,我需要将其传递给同一数据库的另一个objectcontext,但我始终面临以下消息:


一个实体对象不能被多个IEntityChangeTracker实例引用


我需要更改跟踪信息,将其与旧对象分离,并将其附加到新的objectcontext

但是在新的作用域中,我没有旧的objectContext来分离它


我的问题:如何将此对象的跟踪信息更改为新的ObjectContext?

当第一个上下文仍在范围内时,您必须
将该实体从第一个上下文中分离出来。由于上下文是工作单元,因此您根本需要这样做,并且存在上下文范围问题,这表明您可能希望更广泛地审视您的设计。

您必须
在上下文仍在范围内时,将实体从第一个上下文中分离出来。由于上下文是工作单元,事实上,您需要这样做,并且存在上下文范围问题,这表明您可能希望更广泛地了解您的设计。

我知道我需要附加它,但我正在以一种积极的模式工作,例如,我在使用delete函数时,在检查对象是否在外部被跟踪后,不知道该对象是否在外部被跟踪附加,并发现它没有附加它被认为是两种情况之一:1-这是新创建的对象,还没有拉网。(在删除之前,我将附加它)。2-它是一个来自不同objectContext的现有对象(我不能附加到它,但它已经附加到另一个我不拥有的对象上下文)案例2是我的问题你认为有设计问题吗?正如我所说,OC是一个工作单元。如果工作单元跨越到存储库中的多个调用,则OC必须跨越这些多个调用。我的建议是使用DI来(1)管理OC的生命周期,(2)在需要时将其注入存储库。在一个工作单元中同时或以串行方式使用多个上下文总是很痛苦的。但我的案例需要同时使用多个上下文,因为我需要多个工作单元。我使用了此代码,但它产生了相同的错误,但只将实体状态更改为Distached:IEntityWithChangeTracker trackedEntity=entity as带changetracker的智能化;SetChangeTracker(空)_objectSet.Attach(entity)相同的错误:一个实体对象不能被多个IEntityChangeTracker实例引用。如果您“需要”多个并发和交互的工作单元,然后你发现了你的设计问题。我知道我需要附加它,但我正在以一种积极的模式工作,例如,我在删除功能中工作,在检查对象是否附加后,我不知道它是否被跟踪到外部或否。它被认为是两种情况之一:1-它是新创建的对象,该对象尚未展开。(在删除之前,我将附加它)。2-它是一个来自不同objectContext的现有对象(我不能附加到它,但它已经附加到另一个我不拥有的对象上下文)案例2是我的问题你认为有设计问题吗?正如我所说,OC是一个工作单元。如果工作单元跨越到存储库中的多个调用,则OC必须跨越这些多个调用。我的建议是使用DI来(1)管理OC的生命周期,(2)在需要时将其注入存储库。在一个工作单元中同时或以串行方式使用多个上下文总是很痛苦的。但我的案例需要同时使用多个上下文,因为我需要多个工作单元。我使用了此代码,但它产生了相同的错误,但只将实体状态更改为Distached:IEntityWithChangeTracker trackedEntity=entity as带changetracker的智能化;SetChangeTracker(空)_objectSet.Attach(entity)相同的错误:entity对象不能被多个IEntityChangeTracker实例引用。如果您同时“需要”多个工作单元并进行交互,那么您就发现了设计问题。