c# - 使用 Linq 在 EF 中编辑用户时无法创建类型的常量值

标签 c# asp.net entity-framework linq

在尝试查看表是否包含一组特定值时出现此错误。下面是抛出错误的地方。有谁知道如何解决这个异常并仍然检查我的表以避免插入重复的行?谢谢你!

var qryDepts = from p in AuthContext.Dept_User_Bridge
                           where p.UserID == editedUser.UserID
                           select p;

foreach (var dept in editedUser.DeptIDs)
{
    var deptObj = new Dept_User_Bridge { UserID = editedUser.UserID, DeptID = dept };

    //exception thrown here
    if (!qryDepts.Contains(deptObj))
    {
        AuthContext.Dept_User_Bridge.Add(new Dept_User_Bridge
        {
            DeptID = dept,
            UserID = editedUser.UserID
        });
    }
}

最佳答案

一件事是您想使用 ToList() 将数据加载到内存中。

var qryDepts = (from p in AuthContext.Dept_User_Bridge
               where p.UserID == editedUser.UserID
               select p).ToList();

然后,您可以尝试使用 Any()

if(!qryDepts.Any(x => x.UserID == deptObj.UserID))
{
  ...
}

关于c# - 使用 Linq 在 EF 中编辑用户时无法创建类型的常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44785573/

相关文章:

c# - WPF 自定义 TextTrimming

c# - 更新到 Ranorex 9.1 后无法构建解决方案

C# 通用问题

javascript - 如何使 mp3 文件在所有页面上连续播放?

performance - LINQ to Entities -- OrderBy().ToList() 与 ToList().OrderBy()

c# - 确定 XmlTextReader.Read() 是否读取结束标记

asp.net - 应用程序池标识或模拟

javascript - 如何使用已在 .aspx 页面中声明的所有样式从 asp.net 后面的代码向 UI 动态添加图像

.net - EF Profiler - 它是如何工作的?

mysql - 无法加载文件或程序集“MySql.Data.EntityFramework,版本=8.0.19.0或其依赖项之一”