2012-03-26 73 views
0

我有一個分貝第一個模型定義爲一個實體:實體框架ID值分配:

public class Merlin_BR_Condiciones_Item 
{ 
public int IntIdGrupoCondiciones { get; set; } 
public string StrCondicion { get; set; } 
[Key] 
public int IntIdCondicion { get; set; } 

public virtual Merlin_BR_Condiciones_Item_Grupos Merlin_BR_Condiciones_Item_Grupos { get; set; } 
} 

和自動生成的控制器,該控制器具有此創建操作:

public ActionResult Create(int pIntIdGrupoCondiciones = 0) 
{ 
    ViewBag.IntIdGrupoCondiciones = new SelectList(db.Merlin_BR_Condiciones_Item_Grupos, "IntIdGrupoCondiciones", "StrDescripcionGrupo"); 
    return View(); 
} 
[HttpPost] 
public ActionResult Create(Merlin_BR_Condiciones_Item merlin_br_condiciones_item) 
{ 
    if (ModelState.IsValid) 
    { 
     //================================================================================ 
     // This section add the current key to IntIdCondicion 
     //================================================================================ 
     var max = from c in db.Merlin_BR_Condiciones_Item 
        select c; 
     merlin_br_condiciones_item.IntIdCondicion = max.AsQueryable().Max(x => x.IntIdCondicion) + 1; 
     //================================================================================ 

     db.Merlin_BR_Condiciones_Item.Add(merlin_br_condiciones_item); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    ViewBag.IntIdGrupoCondiciones = new SelectList(db.Merlin_BR_Condiciones_Item_Grupos, "IntIdGrupoCondiciones", "StrDescripcionGrupo", merlin_br_condiciones_item.IntIdGrupoCondiciones); 
    return View(merlin_br_condiciones_item); 
} 

這個實體有一個Id列在HttPost中手動分配(創建操作)。 問題是,一個錯誤使我無法在IntIdCondicion列中插入NULL值。

按照步驟代碼值allways返回一個有效的關鍵。

Tks爲您提供幫助。

+0

您是否在視圖上顯示了ID?像使用Razor的'@ Html.HiddenFor(m => m.IntIdCondicion)'。編輯:我應該指出這個問題背後的原因是,後期操作可用的內容僅僅來自前端,而不是早期get方法返回的內容。 – 2012-03-26 21:17:53

+0

不,我沒有它..視圖自動生成 – 2012-03-26 21:19:07

回答

1

默認情況下,EF期望在數據庫中生成所有整型主鍵。因此,修改映射,並告訴你的主鍵是不是EF自動生成:如果您使用的EDMX

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public int IntIdCondicion { get; set; } 

必須在IntIdCondicion性能配置StoreGeneratedPatternNone

+0

非常感謝您的幫助。 – 2012-03-26 21:32:57