Я хочу вставить новую запись в таблицу 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 * Я удивлен, увидев, что intellisense говорит мне: "Обратите внимание, что новый объект не добавляется или не привязан к набору"
Ошибка чтения:
"Нарушение ограничения PRIMARY KEY" PK_TableName ". Невозможно вставить дублировать ключ в объекте 'dbo.TableName'. Значение повторяющегося ключа (0).\R\nПриложение завершено.
Проблема в том, что questionComment
имеет свой PK: questionComment.Id
по умолчанию 0
. Это должен быть следующий доступный идентификатор или иначе не заполненный и сделать "нормальную" идентификационную вставку.
Как инфраструктура сущности ожидает, что я обработаю этот сценарий?
Как запрошено:
//------------------------------------------------------------------------------
// <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; }
}
}