したがって、かなりシンプルなコントローラを備えたかなりシンプルなモデルがあります。私の見解は、コントローラにTabularData
レコードを正常に渡します。コンテキストに追加する動作を経て、SaveChanges
に表示されます。エラーや何も起こりません。しかし、データベースをチェックすると、そのレコードはテーブルに存在しません。なぜ私は私の人生のために理解することはできません。同じレコードを再度挿入しようとすると、キー違反エラーが発生します。私はレコードをSQLに挿入すると、VSのサーバーエクスプローラーでテーブルをクエリすると表示されるため、モデルが正しいデータベースに接続されていると確信しています。ActionResultがデータベースにレコードを永続させないのはなぜですか?
namespace ReflectionProject.Models
{
public class TabularData
{
[Key]
public string User { get; set; }
public string Choice1 { get; set; }
public string Choice2 { get; set; }
public string Choice3 { get; set; }
public string Choice4 { get; set; }
public string Choice5 { get; set; }
}
public class SandboxDBContext : DbContext
{
public DbSet<TabularData> TabularDatas { get; set; }
}
}
そして、ここでは、コントローラの::
ここに私のモデルのそれは、このような簡単な操作のように思えるが、私は...私が間違ってやっているかを把握しようとしているを私の頭を悩まよ
namespace ReflectionProject.Controllers
{
public class HomeController : Controller
{
private SandboxDBContext db = new SandboxDBContext();
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public string Index(TabularData td)
{
db.TabularDatas.Add(td);
db.SaveChanges();
return "Thanks!";
}
}
}
もう1つのメモ:レコードをもう一度挿入しようとすると、キー違反が発生します。しかし、SQL Serverに手動でレコードを挿入しても、それは不平を言うことはありません。そして、私はモデルが正しいDBを指していると確信しています。
[Key] [Key、DatabaseGenerated(DatabaseGeneratedOption.None)]の代わりにキーフィールドにこれを追加してみてください。 – JamieD77