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

2 に答える 2

0

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

于 2008-08-27T01:04:58.037 に答える
0

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

DataContext.TableName.Contains(Item)

または、id フィールドを使用します。項目がデータベースに挿入されると、行が割り当てられます。

if(Item.id == 0)
   DataContext.Insert(Item)
else
   DataContext.Update(Item)
于 2008-08-23T20:54:12.047 に答える