2015-09-04 91 views
0

我爲壞主題冠軍道歉,因爲我有點失落,我應該在這裏做什麼。我應該使用哪種連接? [EF4.0代碼第一]

首先,這裏是我的數據庫表的設計,我想繼續之前接受某種形式的反饋,以及:

我試圖讓一個註冊的Web應用程序。

主題

subject 
[id] [subj] [professor] [cstart] [cend] [days] [count] [units] 
1 comalgo carl  10:00am 12:30pm M-W  40  3.0 
2 compasm carl  01:00pm 02:30pm T-TH  40  3.0 
3 compro  miguel  04:30pm 06:30pm M-W  35  3.0 
4 pro5  fua   03:30pm 05:30pm T-TH  30  3.0 
5 pro5  fua   06:30pm 08:30pm F  10  3.0 

學生

students 
[id] [fname] [lname] [bday]  [unitsleft] [unitstaken] [major] 
1 carlos doe  11/20/1990  100   0   BS-COMPUTER SCIENCE 
2 miguel doe  08/15/1992  100   0   BS-ECONOMY 
3 carl  doe  12/12/1991  100   0   BS-PSYCHOLOGY 
4 test  doe  02/12/1992  100   0   BS-LITERATURE 

我打算做的是,該主題將通過一系列列表的介紹和學生將選擇多個科目和註冊。總登記單位不應大於20且小於11.我已經實施了該部分,現在我正在致力於存儲所選主題。

這裏是我提出的解決方案,我想收到一些關於它的反饋和我應該使用什麼操作。

我將有一個集中表所有已登記科目的

入選患者

selected subject 
[id] [subjid] [studentid] [status] 
1  1  1   P  //comalgo enrolled by carlos, P is for pending grade 
2  1  2   P  //comalgo enrolled by miguel P is for pending grade 
3  2  1   P  //compasm enrolled by carlos P is for pending grade 

我打算出現的情況是:我對學生的個人資料頁,他們將能夠查看/編輯他們當前正在登記的主題(基於ID)

我希望他們能夠看到以下表格標題,這些表格標題是基於註冊的主題TS:

[subj] [professor] [cstart] [cend] [days]

這裏是我的問題的簡短摘要:

1)是我的桌子好嗎?或者這是一個糟糕的設計? 2.)我應該使用什麼樣的方法?我試圖研究它(加入),但我有點困惑,需要澄清。我想向用戶展示他們選擇的主題。

編輯:我想我可以做這樣的事情。選擇其中id = X從enrolled subjects再拿到subject id,但我不知道這將是有效的。

回答

0

您的表格看起來不錯(即第三範式)。內連接會做

SELECT 
    B.subj, B.professor, B.cstart, B.cend, B.days 
FROM 
    selectedsubjects A 
    INNER JOIN subjects B ON A.subjid = B.id 
WHERE 
    A.studentid = 1 

附:這看起來像是一本書的作業或某本書的內容......?

+0

哦,不,這只是一個個人項目,以測試自己,我會嘗試你做了什麼,感謝您的反饋和答案:d –

+0

另一件事情,如果有什麼我想顯示'status'呢? –

0

這可能是:

var query = context.EnrolledSubjects 
    .Include("Subject") 
    .Where(i => i.StudentId == 1) 
    .Select(i => new { 
     i.Subject.Subj, 
     i.Subject.Professor, 
     i.Subject.CsStart, 
     i.Subject.Send, 
     i.Subject.Days, 
     i.Status 
}; 
+0

哦,不錯,謝謝。我會在稍後嘗試。這是從上面的帖子相當於lambda? 「主題」是表格的名稱? –

+0

是的,'Subject'是'EnrolledSubject'上的導航屬性。如果你有問題,請用你的課堂結構更新你的答案 –

+0

還有一件事,我需要讓另一個課程來保存結果列表嗎?因爲我打算將它傳遞給觀點。 –