将实体添加到数据上下文

时间:2020-03-05 18:42:28  来源:igfitidea点击:

在LINQ to SQL中,是否可以在尝试添加实体之前检查它是否已成为数据上下文的一部分?

有一点帮助的话...

我在我的global.asax中有此代码作为辅助方法。通常,在请求之间,这不是问题。但是登录后马上就被调用了不止一次,第二次我最终尝试将"成员"对象添加到创建它的相同工作单元中。

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)

回答

除了添加到新的数据上下文外,为什么不只是在新的数据上下文中重新查询对象?它认为这是一个更可靠和无状态的策略。