Pregunta

En LINQ to SQL, ¿es posible comprobar si una entidad ya forma parte del contexto de datos antes de intentar adjuntarla?

Un poco de contexto si ayuda...

Tengo este código en mi global.asax como método auxiliar.Normalmente, entre solicitudes, esto no es un problema.Pero justo después de iniciar sesión, me llaman más de una vez y la segunda vez termino intentando adjuntar el archivo. Member objeto en la misma unidad de trabajo donde fue creado.

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);
}
¿Fue útil?

Solución

Creo que hay dos métodos para hacer esto.

DataContext.TableName.Contains(Item)

o usamos el campo id.Si el elemento se inserta en la base de datos, se le asignará una fila.

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

Otros consejos

En lugar de adjuntarlo a un nuevo contexto de datos, ¿por qué no simplemente volver a consultar el objeto en el nuevo contexto de datos?Cree que es una estrategia más confiable y apátrida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top