문제
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)
다른 팁
새 데이터 컨텍스트에 연결하는 대신 새 데이터 컨텍스트에서 개체를 다시 쿼리하면 어떨까요?이는 보다 안정적이고 상태 비저장 전략이라고 믿습니다.
제휴하지 않습니다 StackOverflow