【问题标题】:How can I make this LinqToSQL query work? (SqlExecption)我怎样才能使这个 LinqToSQL 查询工作? (SqlExecption)
【发布时间】:2010-06-03 09:02:43
【问题描述】:

下面的代码给了我一个 SqlException:Invalid object name 'dbo.studentsCourses'

OO theCourse = subject.Course; var students = dc.studentsCourses.Where(x => x.course == theCourse).Select(x => x.student);

我尝试了以下代码,但也出现异常。 我最初的问题是在 Aardvark 上提出的,可以阅读如下:

var allStudents = 从 dc.students 中的 s 选择 s; 列出学生 = new List(); foreach(所有学生中的学生) { if (s.courses.Contains(theCourse)) { thestudents.Add(s); } }

我在我的 dbml 上右键单击“运行自定义工具”并检查了我的表和实体的名称。该项目编译,但我在运行时在这一行得到一个异常: “如果(s.courses.Contains(theCourse))” 有什么想法吗?

关于 Aardvark 的原始问题:

如何执行 LinqToSQL 查询 给我这个:我想全选 参加某个特定课程的学生 课。教训是从某个 课程。所以选择课程 教训是从。现在选择所有 正在关注的学生 课程。有一个多对多 学生和学生之间的关系 我的数据库中的课程表。我已经 扩展了我的 LINQ 实体,使其能够 选择 student.Courses 和 course.Student使用这种方法: http://www.codeproject.com/KB/linq/linq-to-sql-many-to-many.aspx

【问题讨论】:

  • SqlException 说明了什么?
  • "无效的对象名称 'dbo.studentsCourses'。"目前我不再关注这个问题,因为我使用一种解决方法解决了它。题外话:如何将此问题标记为“已解决”,如何链接到对答案的回复,而不是答案本身?

标签: c# linq-to-sql


【解决方案1】:

您指向 sql 类的链接与您的数据库架构不匹配,或者您的数据库不包含名为 studentcourses 的表或视图。您需要调整类或数据库以使其匹配。

【讨论】:

  • 我决定用 CTRL-F 替换所有的 studentcourses 和 student_courses(表名)。我不明白这是如何解决的,但现在可以了。
  • 顺便说一句,名称应该作为 LinqToSQL 实体存在,不一定作为数据库中的表存在,不是吗?
  • 该错误是由于 LinqtoSQL 生成的 SQL 代码引用了不存在的数据库对象(在本例中为表)这一事实引起的。这一定是因为您有一个类映射到一个不存在的表,可能是因为数据库表的名称在某个时候发生了变化。您的 LinqToSQL 实体不必与其对应的数据库表命名相同,但它们不能映射到不存在的数据库表。
【解决方案2】:

您可以通过可视化由 LinqToSQL 生成的查询来开始调试此问题。顾先生前段时间写过一篇博文: http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx

只需将查询复制/粘贴到您最喜欢的数据库管理应用程序中,然后针对数据库运行它。应该清楚错误是什么。如果仍有一些疯狂的事情发生,请更新您的问题?

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    首先检查你的数据库,看看是否真的有一个表或视图名称为studentCourses。 如果有则尝试重新生成 dbml 文件,然后重试。

    【讨论】:

      【解决方案4】:

      我不确定……但你可以试试这个:

      var xxx = dc.Include("studentsCourses") .students课程 .Where(x => x.course == theCourse) .Select(x => x.student) .ToList();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        相关资源
        最近更新 更多