2009-02-09 10 views
15

Ich habe eine Prozedur, in der ich ein Entitätsobjekt speichern muss. Das Problem ist, dass ich nicht weiß, ob diese Entity an meinen Datenkontext angehängt ist oder nicht. Um dies zu lösen verwende ich den folgenden Code:Ermitteln, ob die Entität an einen Datenkontext gebunden ist

try 
{ 
    db.ClientUsers.Attach(clientUser); 
    db.Refresh(RefreshMode.KeepCurrentValues, clientUser); 
} 
catch { } 

db.SubmitChanges(); 

Ich bin für eine bessere Methode suchen, um festzustellen, ob ein Unternehmen zu einem Kontext gehört und auch zu testen, ob ein Unternehmen auf einen bestimmten Kontext gebunden ist.

Antwort

22

Ich frage mich ... Was gibt GetOriginalEntityState für ein nicht angefügtes Objekt zurück? Auch wenn es eine Ausnahme auslöst, wird es wahrscheinlich schneller sein als ein Refresh ...

(Update) - ein Test zeigt, es gibt null zurück:

 Customer cust = new Customer(); 
     Customer orig = ctx.Customers.GetOriginalEntityState(cust); 
     Assert.IsNull(orig); 

     cust = new Customer(); 
     ctx.Customers.Attach(cust); 
     orig = ctx.Customers.GetOriginalEntityState(cust); 
     Assert.IsNotNull(orig); 
     Assert.AreNotSame(cust,orig); 

Also vielleicht GetOriginalEntityState verwenden und überprüfen Sie auf null zurück Wert ...

+3

Das ist großartig! Ergibt eine schöne "IsAttached (Of T)" - Erweiterungsmethode für DataContext. – rossisdead

Verwandte Themen