문제

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