2012-03-26 4 views
0

を私はデシベル最初のモデルのように定義されたエンティティがあります。Entity Frameworkの同上値は割り当てる:

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値を挿入できないというエラーが表示されるという問題があります。

ステップバイステップで、値をコードすると有効なキーが返されます。

あなたのお手伝いをします。

+0

あなたのビューにIDのディスプレイがありますか? Razorで '@ Html.HiddenFor(m => m.IntIdCondicion)'のようなものです。編集:私はこの問題の背後にある理由は、ポストアクションに利用できるものは、フロントエンドから来るものだけであり、以前のgetメソッドで返されたものではないということです。 –

+0

いいえ私はそれを持っていません..ビューは自動的に生成されました –

答えて

1

デフォルトでは、EFではすべての整数プライマリキーがデータベース内で生成されると想定しています。だからあなたのマッピングを変更し、プライマリキーが自動生成されていないEFを伝える:

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

あなたはEDMXを使用している場合は、IntIdCondicionプロパティでNoneStoreGeneratedPatternを設定する必要があります。

+0

あなたの助けに非常にtks。 –

関連する問題