我很难调试特定问题并且有几个问题。首先,这是正在发生的事情:
我有一个名为Employees
的相对简单的表,它有一个主键/标识Id
。还有一个Username
列 - 这是我用于成员身份的GUID
表的aspnet_Users
外键。最后,还有另一个外键Team_Id
指向另一个表Teams
。
我真正想做的就是给出一个选定员工的ID,然后将其传递给DAL中的方法,然后通过以下语句找到该员工:
var employee = entities.Employees.Where(emp => emp.Id == employeeId);
一旦检索到员工,我想使用另一个传递给同一方法的值 - 所选团队的ID - 来更新员工的Team_Id
值(他们被分配到哪个团队),使用以下:
employee.First().Team_Id = teamId;
entities.SaveChanges();
我得到了例外
列名无效:{Name}
对我来说没有意义,因为Employee没有名称列。
所有这些都说,我的问题是:
混合起来可能来自哪里?我已经尝试过一种方法来逐步执行代码,但似乎错误是在查询本身的某个地方,所以我不确定如何跟踪查询本身的执行。
它可能与我生成的实体有关吗?我注意到,当我在Intellisense中输入employee.First().
Name
时。我真的很困惑,因为我已经提到员工表中没有名称列。
答案 0 :(得分:1)
修正了问题。我刚删除了现有的Entity Framework Model并重新添加了它。
答案 1 :(得分:0)
就查询而言,您始终可以使用SQL事件探查器来查看实际运行的脚本。无论如何,这是对生成的SQL进行故障排除的好方法。
对于你的财产,某种程度上它确实适合你的班级,所以你的数据模型认为它存在,无论出于何种原因。我只想说你的数据模型(你没有提到这是EF还是LINQ-to-SQL),你会在那里看到“Name”。只需删除它,它就会从类和数据访问中删除它。