У меня есть таблица, в которой одним из полей является «InDatabase» (тип «бит» SQL Server), который не допускает нулей.
Я создаю таблицу и добавляю в нее несколько сотен строк, где InDatabase всегда присваивается значение (InDatabase относится к тому, находится ли строка в другой базе данных)
Когда я вызываю SqlBulkCopy, он выдает ошибку InvalidOperationException с сообщением:
"Column 'InDatabase' does not allow DBNull.Value."
Каждая строка создается как таковая:
ProductionDatabaseDataSet.EntriesV2Row NewRow = this.InsertTable.NewEntriesV2Row();
NewRow.MeetEntryID = MeetEntryID;
NewRow.EventID = EventID;
NewRow.MeetID = MeetID;
NewRow.AthleteID = AthleteID;
NewRow.Exhibition = Exhibition;
NewRow.Bonus = Bonus;
NewRow.EnterEvent = true;
NewRow.InDatabase = true;
if (AutoTime != null)
NewRow.AutoTime = AutoTime ?? -1;
if (CustomTime != null)
NewRow.CustomTime = CustomTime ?? -1;
this.InsertTable.AddEntriesV2Row(NewRow);
Затем, после того как вышеописанное вызывается около 300 раз, вызывается SqlBulkCopy:
SqlBulkCopy bulkCopy = new SqlBulkCopy(this.Connection.ConnectionString);
bulkCopy.DestinationTableName = this.Adapter.TableMappings[0].DataSetTable;
bulkCopy.BatchSize = BatchSize;
bulkCopy.WriteToServer(InsertTable); //Throwing the error
Я использую точно такой же формат примерно на дюжине других таблиц без проблем.