将实体附加到数据上下文
问题描述:
在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);
}
答
我相信有两种方法可以做到这一点。
DataContext.TableName.Contains(Item)
或者我们使用id字段。如果该项目被插入到数据库中,那么它将被分配一行。
if(Item.id == 0)
DataContext.Insert(Item)
else
DataContext.Update(Item)
答
而不是附加到新的数据上下文为什么不只是重新查询新的数据上下文中的对象?它相信这是一个更可靠和无状态的战略。