2008-08-23 13 views
0

LINQ to SQLでは、エンティティがデータコンテキストの一部であるかどうかをチェックしてから、アタッチしようとしていますか?データコンテキストへのエンティティのアタッチ

少し文脈それは場合に役立ちます...

は、私は私のglobal.asaxとしてヘルパーメソッドでこのコードを持っています。通常、リクエストの間に、これは問題ではありません。しかし、サインインした直後に、これは複数回呼び出されていて、2回目には、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

私はこれを行うには2つの方法があると思います。

DataContext.TableName.Contains(Item) 

またはidフィールドを使用します。アイテムがデータベースに挿入されている場合は、行が割り当てられます。

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

なぜ新しいデータコンテキストにアタッチするのではなく、新しいdatacontextでオブジェクトを再クエリーするのはなぜですか?それはより信頼できるステートレス戦略だと信じています。

関連する問題