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列を変更する場所
trainingTargetはどこに宣言していますか? –
これは単なるコピーアンドペーストエラーでした。私はコードを編集しました。 "projectClass"にする必要があります。 –