SQL テーブルに新しいレコードを挿入したいと考えています。私は試した:
public void CreateComment(int questionId, string comment)
{
QuestionComment questionComment = context.TableName.Create();//1*
questionComment.propertyThatIsNotAConstraint= questionId;
questionComment.body = comment;
context.QuestionComments.Add(questionComment);
context.SaveChanges();//ERROR...
}
1* インテリセンスが次のように言うのを見て驚いています :
エラーの読み取り:
"PRIMARY KEY 制約 'PK_TableName' に違反しています。オブジェクト 'dbo.TableName' に重複キーを挿入できません。重複キーの値は (0) です。\r\nステートメントは終了しました。"
問題は、questionComment
その PK:questionComment.Id
がデフォルトで に設定されていること0
です。それは、次に利用可能な ID であるか、そうでなければ入力されず、「通常の」ID 挿入を行う必要があります。
エンティティ フレームワークは、このシーンをどのように処理することを期待していますか?
要求どおり:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Feedback.Models
{
using System;
using System.Collections.Generic;
public partial class QuestionComment
{
public int id { get; set; }
public int questionId { get; set; }
public string body { get; set; }
public int commentIndex { get; set; }
}
}