質問

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);
}
役に立ちましたか?

解決

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

DataContext.TableName.Contains(Item)

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

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top