Прикрепление сущностей к контекстам данных
-
09-06-2019 - |
Вопрос
Можно ли в 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)
Другие советы
Вместо того, чтобы привязываться к новому контексту данных, почему бы просто не запросить объект в новом контексте данных?Они считают, что это более надежная стратегия без гражданства.