2008-08-23 84 views
0

在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); 
} 

回答

0

我相信有兩種方法可以做到這一點。

DataContext.TableName.Contains(Item) 

或者我們使用id字段。如果該項目被插入到數據庫中,那麼它將被分配一行。

if(Item.id == 0) 
    DataContext.Insert(Item) 
else 
    DataContext.Update(Item) 
0

而不是附加到新的數據上下文爲什麼不只是重新查詢新的數據上下文中的對象?它相信這是一個更可靠和無狀態的戰略。

相關問題