Можно ли в LINQ to SQL проверить, является ли объект уже частью контекста данных, прежде чем пытаться присоединить его?
Немного контекста, если это поможет ...
У меня есть этот код в моем global.asax в качестве вспомогательного метода. Обычно между запросами это не проблема. Но сразу после входа это вызывается более одного раза, и во второй раз я пытаюсь присоединить объект Member к той же единице работы, где он был создан.
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);
}





Я считаю, что есть два способа сделать это.
DataContext.TableName.Contains(Item)
или мы используем поле id. Если элемент вставлен в базу данных, ему будет назначена строка.
if (Item.id == 0)
DataContext.Insert(Item)
else
DataContext.Update(Item)
Вместо того, чтобы присоединяться к новому контексту данных, почему бы просто не запросить объект в новом контексте данных? Он считает, что это более надежная стратегия без гражданства.