簡體   English   中英

實體框架-處置ObjectContext時是否分離實體?

[英]Entity Framework - Detaching entities when ObjectContext disposed?

我在WinForms應用程序中使用EF,我的想法是每個事務都有一個ObjectContext,而不是一個長期運行的上下文。 但是,當我嘗試將先前事務中的對象附加到新事務中時,出現了錯誤,這與該實體已經在另一個上下文中有關。

我有點假設當對象上下文被釋放時,實體會分離,不是嗎? (也許我沒有將上下文正確地放置在某個地方)。 如果實體不分離,是否有辦法處置?

編輯

顯然,在上下文處理之后,實體並沒有像@ F.Aquino所說的那樣被分離,但是這樣做似乎是可行的。 盡管我不確定這是否是處理實體的正確方法。 也許有人可以評論由此引起的問題:

public void Attach(params EntityObject[] objects)
{
    foreach (EntityObject obj in objects)
    {
        ((IEntityWithChangeTracker)obj).SetChangeTracker(null);
        entities.Attach(obj);
    }
}

基本上,當我想將實體重新附加到上下文時,我只是將實體的變更跟蹤器為空,然后將其附加到新的上下文。 似乎工作正常。

您必須手動分離它們,並記住所有引用將在處理過程中被處理。 Matthieu Mezil有一個很棒的神奇類 ,可以解決EF 1中重新附加實體的所有麻煩,用法類似於:

public static EntityObject SaveOrUpdate(this EntityObject entity)
{
    using (MyEntities context = new MyEntities())
    {
        entity.AttachGraph(context, () => new MyEntities());
        context.SaveChanges();
        return entity;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM