У меня есть база данных с таблицей, содержащей первичный ключ 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
?