MVC Webページを介してテーブルに値を挿入しようとしています。 Visual Studioで生成されたlocalDBのWebページを実行しているときに、このエラーは発生しませんでした。私はリモートデータベースに移行して以来、私は今このエラーを取得しています。MVC&SQL:新しいデータベースに移行した後にNULL値を列に挿入できません
カラム 'DRTReviewerId'、テーブル 'FC.Developer_Schema.DRTReviewers'に値NULLを挿入できません。列はNULLを許可しません。 INSERTは失敗します。 ステートメントが終了しました。ここで
は、コードの問題の一部です:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "DRTReviewerId,Name")] DRTReviewer dRTReviewer)
{
if (ModelState.IsValid)
{
db.DRTReviewers.Add(dRTReviewer);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(dRTReviewer);
}
DRTReviewerIdの値は、コードによって生成されたint型はなりませんが、私は、データベースを切り替えるので、これはもはや発生しています。この変化の原因は何でしたか?
コードはエンティティフレームワークを使用して完全に生成されました。私の知識MVCは最高で初心者です。
2つのデータベース(ローカルDBとサーバーDB)が明確に同一の構造を持っていません。リモートDBのテーブルスキーマをチェックして、エンティティフレームワークが期待しているものと一致するかどうかを確認します。おそらく、DRTReviewerId列に「not null」と表示されています。つまり、null値は許可されていません。これは、テーブルのPKフィールドであり、テーブルデザインの自動インクリメントフィールドとしてマークする必要があります。 (通常、この種のIDを生成するのはC#コードではなく、データベースエンジンです)。 – ADyson
また、C#コードからIDフィールドが提供されることを期待している場合は、(a)値が実際にDBに渡されていることを確認するか、(b)空のIDが許可されている場合は、フィールドをNULLにすることができます(ローカルDBを比較して何が違うかを確認できます) – ADyson
プライマリキーとして設定しましたが、自動インクリメントに設定するにはどうすればよいですか? –