Domanda

In LINQ to SQL, è possibile verificare se un'entità fa già parte del contesto dei dati prima di provare ad allegarla?

Un po' di contesto se può aiutare...

Ho questo codice nel mio global.asax come metodo di aiuto.Normalmente, tra una richiesta e l'altra, questo non è un problema.Ma subito dopo aver effettuato l'accesso, questo viene chiamato più di una volta e la seconda volta finisco per provare ad allegare il file Member oggetto nella stessa unità di lavoro in cui è stato creato.

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);
}
È stato utile?

Soluzione

Credo che ci siano due metodi per farlo.

DataContext.TableName.Contains(Item)

oppure usiamo il campo id.Se l'elemento è inserito nel Database, gli verrà assegnata una riga.

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

Altri suggerimenti

Invece di collegarsi a un nuovo contesto dati, perché non ripetere semplicemente la query dell'oggetto nel nuovo contesto dati?Ritiene che sia una strategia più affidabile e apolide.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top