2013-06-20 55 views
0

我試圖以確定是否有EF 5實體附加如下:EF 5 - 無法確定是否一個實體附加

首先這種方法被稱爲:

public bool IsAttached(object entity) 
{ 
    EntityKey entityKey = GetEntityKey(entity); 

    if (entityKey == null) 
     return false; 

    return IsAttached(this.AsObjectContext(), entityKey); 
} 

調用該方法:

public EntityKey GetEntityKey(object entity) 
{ 
    ObjectStateEntry objectStateEntry; 
    if (null != entity && this.AsObjectContext().ObjectStateManager.TryGetObjectStateEntry(entity, out objectStateEntry)) 
    { 
     return objectStateEntry.EntityKey; 
    } 
    return null; 
} 

如果IsAttached()方法返回false,這種方法稱爲:

 var attachedEntity = context.Set<TEntity>().Attach(entity); 

我遇到的問題是IsAttached()方法總是返回false,因爲GetEntityKey()返回null,即使對象已經連接。即使當一個實體被連接時,IOW也不能得到實體鍵,從而導致整個事情失敗。任何人都可以看到我做錯了什麼?

我使用的是EF 5,而不是第一個代碼。

回答

0

你並不需要的大多數代碼的...只是使用

if (context.Entry(entity).State == EntityState.Detached) 
+0

這行代碼失敗了。當我執行此操作時,它告訴我實體已分離,但是當我去附加實體時,出現錯誤,說明對象管理器中存在具有相同鍵的對象。 –

+0

所以你有兩個不同的實體具有相同的密鑰... – qujck

+0

可能是。你知道一個實體密鑰是如何生成的嗎? –

相關問題