2010-06-03 70 views
0

下面的代碼給了我一個SQLException:無效的對象名稱dbo.studentsCourses「如何使這個LinqToSQL查詢工作? (SqlExecption)

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

我嘗試下面的代碼代替,但我也得到一個異常。 我原來的問題,有人問土豚和波紋管可以被讀取:

 
var allStudents = from s in dc.students select s; 
List thestudents = new List(); 
foreach (student s in allStudents) 
{ 
    if (s.courses.Contains(theCourse)) 
    { 
    thestudents.Add(s); 
    } 
} 

我做了一個點擊右鍵,在我的dbml「運行自定義工具」,並檢查了我的表和實體的名字我。該項目編譯,但我在這條線上運行時得到一個異常: 「if(s.courses.Contains(theCourse))」 任何想法?在土豚

原題:

我如何做一個LinqToSQL查詢 給了我這樣的:我想選擇參加某一 教訓所有 學生。課程來自某個 課程。所以請選擇課程 。現在選擇所有 課程後的學生。在我的數據庫中,學生和 課程表之間存在多對多的關係 。我已經 延長我的LINQ實體能夠 選擇使用這種方法student.Courses和 course.Students: http://www.codeproject.com/KB/linq/linq-to-sql-many-to-many.aspx

+0

SqlException說什麼? – Marc 2010-06-03 09:04:41

+0

都是異常相同? – Steven 2010-06-03 09:09:35

+0

「無效的對象名'dbo.studentsCourses'。」 目前我不再看這個問題了,因爲我用解決方法解決了這個問題。 Off topic: 如何將此問題標記爲「已解決」,以及如何鏈接到對答案的答覆,而不是答案本身? – kversch 2010-06-04 11:25:56

回答

0

你的鏈接到SQL類不符合你的數據庫架構或您的DB不包含名爲studentcourses的表格或視圖。你需要調整你的類或數據庫,使它們匹配。

+0

我決定用CTRL-F將所有studentcourses替換爲student_courses(表名)。 我不明白這是如何解決它,但現在確定。 – kversch 2010-06-03 10:55:01

+0

順便說一句,名稱應該作爲LinqToSQL實體存在,不一定是作爲數據庫中的表,不是? – kversch 2010-06-04 07:15:55

+0

這個錯誤是由於LinqtoSQL生成的SQL代碼引用了一個沒有存在的數據庫對象(在這種情況下是一個表)而引起的。這一定是因爲你有一個類映射到一個沒有existant的表,這可能是因爲數據庫表的名字在某個時刻已經改變了。您的LinqToSQL實體不必命名爲相應的數據庫表,但它們不能映射到不存在的數據庫表。 – 2010-06-04 07:40:58

0

您可以通過查看由LinqToSQL生成的查詢來開始調試此問題。顧剛剛就此寫了一篇博文: http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx

只需將查詢複製/粘貼到您最喜歡的數據庫管理應用程序中,然後在數據庫中運行它。它應該變得清楚錯誤是什麼。如果還有一些瘋狂的事情發生,只是更新你的問題?

希望這會有所幫助!

0

首先檢查你的數據庫,看看是否真的有一張表或視圖名爲studentsCourses。 如果存在,則嘗試重新生成爲dbml文件,然後重試。

0

我不知道...但你可以試試這個:

VAR XXX = dc.Include( 「studentsCourses」) .studentsCourses 。凡(X => x.course == theCourse ) 。選擇(x => x.student) .ToList();