Не удается вставить с помощью SQLBulkCopy из-за нарушения ограничения первичного ключа - PullRequest
0 голосов
/ 09 июля 2020

У меня есть база данных с таблицей, содержащей первичный ключ not null (автоматически увеличивается). Я пытаюсь выполнить SQLBulkCopy над базой данных, и я продолжаю получать эту ошибку относительно ключа:

Ошибка

Нарушение ограничения PRIMARY KEY 'PK_AuditLogs'. Невозможно вставить повторяющийся ключ в объект 'dbo.AuditLogs'. Повторяющееся значение ключа - (0). Оператор был прекращен. '

Модель

public class Model
{
    [Key]
    public long Id {get;set;}
    public string Value{get;set;}
}

Создание таблицы данных

public void Insert(IEnumerable<Model> data)
{
    DataTable table = new DataTable();
    List<DataColumn> cols = new List<DataColumn>();
   
    
    cols.Add(new DataColumn("Id", typeof(long)));
    cols.Add(new DataColumn("Value", typeof(string)));
   

     foreach (var item in data) {
        DataRow row = table.NewRow();
        //i am intentionally omitting the primary key
        row["Value"] = item.Value;
     }

      using (var connection = new SqlConnection(ConnectionString)) {
            SqlBulkCopy bulkCopy = new SqlBulkCopy(
                connection,
                SqlBulkCopyOptions.Default); //Default behaviour should let the DB generate the keys
            bulkCopy.DestinationTableName = TableName;
            connection.Open();
            bulkCopy.WriteToServer(table);

        }
}

Как я могу просто заставить SQL сгенерировать первичный ключ (так же, как EF) в операции SQLBulkCopy?

...