2016-05-14 9 views
0

私は外来キーとリンクされた2つのテーブルを持つ簡単なデータベースを持っています。各テーブルにはIDプロパティと自動インクリメントを有効にした「id」列があります。このデータベースからVS2015でモデルを生成しました。 MVC 5 Webアプリケーションに新しいデータを挿入しようとすると、「id」列にNULL値を挿入できないというエラーが表示されます。だからなぜそれがしようとするのだろうと思う。データベースによって自動的にインクリメントされます。マッピングではPARAMATERSは以下のとおりです。Entity Frameworkをデータベースの最初とID列で使用する方法

Entity Key = true 
Nullable = False (it´s integer, so it can´t be Nullable) 
StoreGeneratedPattern = Identity 
Type = Int32 

モデル自体はちょうど自動生成されたクラスである:なし

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Create([Bind(Include = "id,targetName,created,updated,CategoryId")] projectClass projectClass) 
    { 
     if (ModelState.IsValid) 
     { 
      db.projectClass.Add(projectClass); 
      await db.SaveChangesAsync(); 
      return RedirectToAction("Index"); 
     } 

     ViewBag.trainingCategoryId = new SelectList(db.projectClass, "id", "shortDescription", projectClass.CategoryId); 
     return View(projectClass); 
    } 

私は本当に持っている:

namespace project.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class projectClass 
    { 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
     public projectClass() 
     { 
      this.plan = new HashSet<plan>(); 
     } 

     public int id { get; set; } 
     public string targetName { get; set; } 
     public Nullable<System.DateTime> created { get; set; } 
     public Nullable<System.DateTime> updated { get; set; } 
     public int CategoryId { get; set; } 

     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
     public virtual ICollection<plan> plan { get; set; } 
     public virtual Category Category { get; set; } 
    } 
} 

とコントローラが自動生成されすぎid列が挿入されている理由、およびid列を変更する場所

+0

trainingTargetはどこに宣言していますか? –

+0

これは単なるコピーアンドペーストエラーでした。私はコードを編集しました。 "projectClass"にする必要があります。 –

答えて

0

[OK]を取得します。それはデータベースの問題でした。手動で行を挿入しようとしましたが、失敗しました。だから私は例外を引き起こしたこのテーブルにひどく書かれたトリガを見つけました。

関連する問題