Прикрепление сущностей к контекстам данных

StackOverflow https://stackoverflow.com/questions/24556

  •  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)

Другие советы

Вместо того, чтобы привязываться к новому контексту данных, почему бы просто не запросить объект в новом контексте данных?Они считают, что это более надежная стратегия без гражданства.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top