2012-04-26 56 views
2

在我的asp.net應用程序中,我有兩個頁面,如新學生和編輯學生。在新學生頁面上,我傳遞了一般的詳細信息,如名字,姓氏,手機號碼,電子郵件和註冊號碼。如果條件與實體框架

這裏RegNo應該是唯一的。我正在使用實體框架進行數據庫連接。我與狀態檢查,以避免被輸入了相同的REGNO,如:

DataObject.Entities dataEntities = new DataObject.Entities(); 

if (!dataEntities.Students.Any(s => s.RegNo == RegNo)) 
{ 
    // my code here. 
} 

用同樣的方法進行編輯選項,當試圖改變REGNO。如果它被分配給其他學生,它不應該進入更新代碼。

我知道如果我在這裏使用相同的條件,它會失敗,因爲RegNo存在於這個學生的數據庫中(我試圖更新),所以如果RegNo被分配給這個特定的學生,而不是對於其他學生應該接受,否則應該去其他部分。

我不知道如何使用實體框架來檢查。任何人都可以幫助我嗎?

我有一列StudentId,它是一個自動增量列

我試着像

if (!dataEntities.Students.Any(s => s.RegNo == RegNo && s.StudentId != StudentId)) 
{ 
} 

它仍然不工作.....

+0

REGNO工作,這是一個自動標識列,對嗎? – abatishchev 2012-04-26 09:24:21

+0

不,其手動添加列 – shanish 2012-04-26 10:15:42

+0

是否是關鍵?爲什麼不讓它自動識別? – abatishchev 2012-04-26 12:26:11

回答

0

我只是宣佈爲學生表中的對象,並試圖像,

DataObject.Student student = dataEntities.Students.First(s => s.StudentId == 
                    StudentId); 

if (!dataEntities.Students.Any(s => s.RegNo == RegNo && 
              s.StudentId != student.StudentId)) 
{ 

} 
else 
{ 
    throw new exception("RegNo already exists!"); 
} 

和我的數據庫學生創建後,被分配

3
if(!dataEntities.Students.Any(s=>s.RegNo == RegNo && s != studentBeingUpdated)) 

與變量替換studentBeingUpdated包含您當前正在更新的學生的參考。

+0

感謝您的回覆Heinzi,我會檢查它,讓你知道 – shanish 2012-04-26 10:16:58

+0

它不工作我試着按照你的建議,檢查我更新的問題 – shanish 2012-04-26 11:01:49

+0

@Shanish:StudentId是否已經包含有效值? – Heinzi 2012-04-26 11:10:06

1

你可以在數據庫級別設置..即如果你設置自動增量,那麼你不需要編輯/重新分配ID給其他人,並且沒有必要對此進行單獨管理。

請告訴我,如果我誤解了。 :)

+0

沒有它不是一個自動增量欄,它手動添加一個 – shanish 2012-04-26 10:17:19