2014-04-02 60 views
0

我想使用查詢來查找數據庫FPTContributorUsers中名爲ContributorUser的表中的最後一個ID(條目),然後添加一個新的條目,從而分配它是下一個可用的ID。嘗試從ASP.net MVC 4查詢SQL Server使用C#

下面的代碼可以讓我在數據庫中的數據添加到表但是當我運行它的ID(新條目表)顯示爲0,而不是4,因爲我現在有我的表中三個條目

[HttpPost] 
public ActionResult AddContributor(ContributorUsers AddCont) 
{ 
    if (AddCont.UserID == null) 
    { 
    throw new HttpException(404, "Please enter a valid RacfId"); 
    } 
    else 
    { 
    FPTContributorUsers NewUser = new FPTContributorUsers(); 
    NewUser.UserID = AddCont.UserID; 
    NewUser.ID = AddCont.ID; 
    db.ContributorUsers.Add(NewUser); 
    db.SaveChanges(); 
    return RedirectToAction("index"); 
    } 
} 
+0

什麼是'db'後DB語境?如何連接到數據庫? – yoozer8

+0

抱歉db是我連接到數據庫的實體容器的實例,因此問題表 –

+1

我沒有看到你在哪裏得到這個代碼中的下一個ID值,或者你爲什麼會認爲NewUser.ID會除了已經在AddCont.ID內部的內容以外的其他內容。如下所示,在該字段上使用自動遞增,然後不指定ID更爲典型(IMO)。 –

回答

2

你有沒有想過只是讓主鍵和自動增量,所以你不需要確定它是你自己?根據我的經驗,這通常是處理實際ID的最佳方式。

在SQL Server爲此請按照these步驟

爲此在MySQL遵循these步驟

作爲一個說明,如果你這樣做,你需要更新你的EF模型。

如果無法編輯數據庫,另一種方法是對該列使用MAX(),該列將返回最高ID值,然後只添加一個值,不需要EF模型更新。

+0

你能告訴我我是如何使它成爲主鍵嗎?然後自動增量?對不起,我是這個新手。 –

+0

我編輯了我的答案,爲您提供了一些關於在哪裏可以找到所需信息的指針。 –

+0

謝謝。任何想法,我只能在視覺工作室的控制器中實現這一點。只是因爲我的工作任務需要我避免編程SQL服務器 –

0

嘗試刪除 「NewUser.ID = AddCont.ID」 行,並等待得到NewUser.ID直到後 「db.SaveChanges()」

else 
    { 
    FPTContributorUsers NewUser = new FPTContributorUsers(); 
    NewUser.UserID = AddCont.UserID; 
    db.ContributorUsers.Add(NewUser); 
    db.SaveChanges(); 
    return RedirectToAction("index"); 
    } 

如果NewUser.ID屬性是一個身份數據庫中的字段,直到在SaveChanges()事務提交期間創建記錄之後纔會填充該字段。

0

嘗試刷新()調用SaveChanges()調用之前NewUser.ID,這樣的背景下可達最新