Adjuntar entidades a contextos de datos
-
09-06-2019 - |
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);
}
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.