Я не уверен, как ваше соединение управляется с помощью менеджера баз данных, который может быть виновником - убедитесь, что вы используете одно соединение (sqlce не играет хорошо). Также опция набора результатов "ResultSetOption.Scrollable" не нужна (по крайней мере, я никогда не использовал ее для вставки).
Ниже приведен синтаксис, который я использую при прямой вставке таблицы. Каждый объект доступа к базе данных / данным оборачивается в оператор using для удаления объектов после использования - это очень важно, особенно с компактной средой и sqlce, так как сборка мусора не идеальна (вы БУДЕТЕ из памяти исключений!). Я добавил транзакцию в ваш код, чтобы опция была «все или ничего».
Надеюсь, это поможет:
using (var transaction = connection.BeginTransaction())
{
using (var command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandType = CommandType.TableDirect;
command.CommandText = "Event";
using (var rs = command.ExecuteResultSet(ResultSetOptions.Updatable))
{
var record = rs.CreateRecord();
foreach (DAO.Event theEvent in events)
{
record.SetInt32(0, theEvent.ID);
record.SetInt32(1, theEvent.ParentID);
record.SetString(2, theEvent.Name);
record.SetDateTime(3, theEvent.DateTime);
record.SetDateTime(4, theEvent.LastSynced);
record.SetInt32(5, theEvent.LastSyncedTS);
record.SetString(6, theEvent.VenueName);
record.SetBoolean(7, theEvent.IsParentEvent);
record.SetDateTime(11, DateTime.Now);
rs.Insert(record);
}
}
transaction.Commit();
}
}