将实体附加到数据上下文

时间:2008-08-23 20:03:52

标签: c# linq-to-sql

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

2 个答案:

答案 0 :(得分:0)

我相信有两种方法可以做到这一点。

DataContext.TableName.Contains(Item)

或我们使用id字段。如果该项目已插入数据库,则会为其分配一行。

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

答案 1 :(得分:0)

为什么不只是重新查询新datacontext中的对象,而不是附加到新的数据上下文?它认为这是一种更可靠,更无国籍的战略。