2011-12-05 79 views
0

我如何知道某個特定數據是否存在於數據庫中?例如,如果數據庫在表中已經有「Student_Id」和「Course_Id」,則更新記錄,否則插入記錄。如何知道數據庫中是否存在特定記錄?

我已經有一個控制器動作,我用它來插入數據,但我想添加一個額外的功能,它檢查數據庫(SQL Server)並根據記錄是存在還是現在插入/更新。

我使用Linq to SQL來插入數據。

在此先感謝

+0

Student_id和Course_id是如何生成的? – Maess

+0

看看這個StackOverflow的答案 [如果存在SQL到LINQ聲明] [1] [1]:http://stackoverflow.com/questions/476214/if-exists- statement-in-sql-to-linq –

+0

@Maess它們由不同的系統生成。它們都不是主鍵。 – user793468

回答

1

可以,如果該數據通過一個簡單的SELECT語句是有檢查,之前添加的數據。

bool exists = yourTable.Any(row => row.StudentID == studentId && row.CourseID = courseID); 

理想的情況下,雖然,你應該設計數據庫,以使Student_IdCourse_Id此表組合唯一鍵,因此您的代碼將無法將其添加在所有記錄是否已經存在。

由於Maess問,如何產生價值?您的選項可能會根據數據是否是用戶生成而改變。例如;如果您有兩個下拉框選擇學生和課程,請不要讓用戶選擇該學生已經選擇的課程。

+0

'任何'也是一個謂詞。使'Where'多餘。 – leppie

+0

優秀點,會更新答案。謝謝。 – Connell

2

由於您使用LinqToSql我會做類似

var item = (from c in dataContext.TableName 
      where c.StudentID == your_sid && c.CourseID== your_course_id 
      select c).FirstOrDefault(); 


if(item==null) 
{ 
    //insert the record 
} 
else 
{ 
    //update the record 
} 
0

設法得到記錄與.FirstOrDefault(),如果爲null,插入,然後更新的價值觀和.SubmitChanges()

相關問題