下面的代碼適用於已登錄用戶的信用卡表中已有記錄的情況;但是,當用戶在信用卡表中沒有條目時,查詢會按預期找到零個記錄。問題是,聲明maxccid = query.Maxccid();返回Null並引發InvalidOpeation異常。我無法將數據庫中的ccid字段設置爲空,因爲它是主鍵的一部分。我需要一種方法來檢測這個查詢是否會在我運行它之前返回一個null,或者一種方法來捕獲它(最好沒有嘗試捕獲,因爲這種情況對每個新客戶都會發生(Try/Catch狀態的最佳做法是沒有正確使用Try/Catch)只需要注意添加我正在使用實體框架如何檢測或處理MVC中的空查詢結果?
UPDATE 4/9/14:我修改了查詢以修復我在向用戶失敗程序的評論中報告的問題,邁克,我還有空的問題,但。
// Create CreditCard - Write to DB
public ActionResult Create(CreditCard model)
{
EntitiesContext context = new EntitiesContext();
int uid = (int)WebSecurity.GetUserId(User.Identity.Name); // Currently logged-in user
short? maxccid = 0; //this will be the max ccid for this user
var query = from c in context.CreditCards
where c != null && c.UserId == uid select c.CCID;
maxccid = query.Max();
if(query.Any())maxccid = query.Max(); – failedprogramming