Anhängen von Entitäten an Datenkontexte
-
09-06-2019 - |
Frage
Ist es in LINQ to SQL möglich, zu prüfen, ob eine Entität bereits Teil des Datenkontexts ist, bevor versucht wird, sie anzuhängen?
Ein wenig Kontext, wenn es hilft ...
Ich habe diesen Code in meinem global.asax
als Hilfsmethode.Normalerweise ist dies zwischen Anfragen kein Problem.Aber direkt nach der Anmeldung wird dies mehr als einmal aufgerufen, und beim zweiten Mal versuche ich, das anzuhängen Member
Objekt in derselben Arbeitseinheit, in der es erstellt wurde.
private void CheckCurrentUser()
{
if (!HttpContext.Current.User.Identity.IsAuthenticated)
{
AppHelper.CurrentMember = null;
return;
}
IUserService userService = new UserService();
if (AppHelper.CurrentMember != null)
userService.AttachExisting(AppHelper.CurrentMember);
else
AppHelper.CurrentMember = userService.GetMember(
HttpContext.Current.User.Identity.Name,
AppHelper.CurrentLocation);
}
Lösung
Ich glaube, dass es dafür zwei Methoden gibt.
DataContext.TableName.Contains(Item)
oder wir verwenden das ID-Feld.Wenn das Element in die Datenbank eingefügt wird, wird ihm eine Zeile zugewiesen.
if(Item.id == 0)
DataContext.Insert(Item)
else
DataContext.Update(Item)
Andere Tipps
Anstatt es an einen neuen Datenkontext anzuhängen, warum nicht einfach das Objekt im neuen Datenkontext erneut abfragen?Sie glauben, dass dies eine zuverlässigere und staatenlosere Strategie ist.