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);
}
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top