質問
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)
他のヒント
新しいデータ コンテキストにアタッチするのではなく、新しいデータ コンテキストでオブジェクトを再クエリしてみてはいかがでしょうか。それはより信頼性が高く、ステートレスな戦略であると信じています。
所属していません StackOverflow