C# 在实体框架中更新数据库中的所有记录时出现异常

C# 在实体框架中更新数据库中的所有记录时出现异常,c#,sql-server,entity-framework,linq,C#,Sql Server,Entity Framework,Linq,我有一个关于实体框架的奇怪问题,代码片段如下 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).

我有一个关于实体框架的奇怪问题,代码片段如下

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();
}
var userWorkItems=(来自context.userWorkItems中的uw
将u加入到context.DNN_用户在uw.UserID上等于u.UserID
其中u.Username.StartsWith(fromUserName)
选择uw.ToList();
if(userWorkItems!=null)
{
for(int i=0;i
发生异常时,整个表将使用
fromUserName
Userid
进行更新

什么样的异常导致了这种奇怪的行为,尽管现在已经在
context.SubmitChanges()中添加了一个try-catch


还是我们得出了错误的结论?

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

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

例外。请详细说明。我猜submitchanges()会引发异常,userworkitems表上的整个记录都会更新。遗憾的是,我们无法重现这个问题。我还没有试图解决这个问题,我只是想找出是什么导致了这个问题。是例外吗?如果为“是”,那么什么样的异常会导致这种奇怪的行为,将其包装在事务作用域中可以帮助您重现错误,而无需担心它会再次更改所有行。我从来没有听说过EF编辑表中的所有行,除非有人告诉它。根据你的代码判断,就像我说的,如果fromUserName是一个空字符串,它将返回每一行。有趣的是,编写代码的用户只是修剪用户输入,而不是检查文本框是否包含任何字符串,我只是添加了签入,如果参数为空字符串,则never Knowed StartWith返回所有行。感谢lotNo Problem@kolexinfos