异常更新实体框架中DB中的所有记录

时间:2015-11-18 15:17:10

标签: c# sql-server entity-framework linq

我在Entity Framework中遇到了这个奇怪的问题,下面是代码片段

var userWorkItems = (from uw in context.UserWorkItems
                     join u in context.DNN_Users on uw.UserID equals u.UserID
                     where u.Username.StartsWith(fromUserName)
                     select uw).ToList();

if (userWorkItems != null)
{
    for (int i = 0; i < userWorkItems.Count; i++)
    {
        userWorkItems[i].UserID = toUserID.Value;
    }

    context.SubmitChanges();
}

当发生异常时,整个表格会使用Userid的{​​{1}}进行更新。

什么样的异常会导致这种奇怪的行为,尽管现在已经向fromUserName

添加了try catch

或者我们做出了错误的结论?

1 个答案:

答案 0 :(得分:1)

异常发生在哪里,异常是什么?我相信您的问题可能是fromUserName。如果它是一个空字符串,它将返回每一个UserWorkItem。如果抛出错误并且您不希望它对上下文进行部分保存,请将其包装在TransactionScope中。

using(var scope = new TransactionScope()){
    //Do whatever
    scope.Complete();
}