0

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

2 回答 2

0

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

DataContext.TableName.Contains(Item)

或者我们使用 id 字段。如果该项目被插入到数据库中,那么它将被分配一行。

if(Item.id == 0)
   DataContext.Insert(Item)
else
   DataContext.Update(Item)
于 2008-08-23T20:54:12.047 回答
0

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

于 2008-08-27T01:04:58.037 回答