我有像
这样的代码 deleted = detailTable.AsEnumerable().Where(x=>childForiegnKey(x).Equals(parentKey(newMaster)) &&
!newDetail.Any(z=>childKey(z).Equals(childKey(x)))).ToList();
你知道我的方法在sql中没有翻译,这就是为什么我必须在where子句中调用这些方法之前调用AsEnumerable。当我尝试附加像
这样的实体时出现问题 detailTable.Attach(x);
它开始大喊你不能使用相同的密钥等项目。我已经搜索过它,因为它已经使用相同的dataContext加载了相同的实体。好吧,那么相同的datacontext只在第一个Lambda表达式中调用db。我相信AsEnumerable是罪魁祸首(也许它将整个表格带入内存或将每一行标记为已加载等)。我怎么解决这个问题。我必须在where子句中使用这些方法,我必须附加实体。有解决方案吗? 编辑:值得一提的是,问题更加烦人,因为我们无法轻松地在L2中分离实体。二进制序列化要求我的所有类都使用一些属性进行修饰。所以我有点迷失在这里。