将实体附加到数据上下文
Posted
技术标签:
【中文标题】将实体附加到数据上下文【英文标题】:Attaching entities to data contexts 【发布时间】:2010-09-06 16:14:03 【问题描述】:在 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);
【问题讨论】:
【参考方案1】:我相信有两种方法可以做到这一点。
DataContext.TableName.Contains(Item)
或者我们使用 id 字段。如果该项目被插入到数据库中,那么它将被分配一个行。
if(Item.id == 0)
DataContext.Insert(Item)
else
DataContext.Update(Item)
【讨论】:
【参考方案2】:为什么不直接在新数据上下文中重新查询对象,而不是附加到新数据上下文?它认为这是一种更可靠且无状态的策略。
【讨论】:
以上是关于将实体附加到数据上下文的主要内容,如果未能解决你的问题,请参考以下文章
找出实体是不是附加到 dbContext 的最合理方法是啥?