Question

Dans LINQ to SQL, est-il possible de vérifier si une entité fait déjà partie du contexte de données avant d'essayer de l'attacher ?

Un peu de contexte si ça peut aider...

J'ai ce code dans mon global.asax comme méthode d'assistance.Normalement, entre les demandes, ce n'est pas un problème.Mais juste après la connexion, ceci est appelé plus d'une fois, et la deuxième fois, je finis par essayer de joindre le Member objet dans la même unité de travail où il a été créé.

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);
}
Était-ce utile?

La solution

Je crois qu'il existe deux méthodes pour ce faire.

DataContext.TableName.Contains(Item)

ou nous utilisons le champ id.Si l'élément est inséré dans la base de données, une ligne lui sera alors attribuée.

if(Item.id == 0)
   DataContext.Insert(Item)
else
   DataContext.Update(Item)

Autres conseils

Plutôt que de s'attacher à un nouveau contexte de données, pourquoi ne pas simplement réinterroger l'objet dans le nouveau contexte de données ?Il pense qu’il s’agit d’une stratégie plus fiable et apatride.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top