У меня странная проблема, которую я пытался решить.
BulkInsert работает в одной базе данных, но не в другой, даже с идентичными таблицами.Visual Studio 2017, c #.Я использовал обратное poco для создания файлов структуры сущностей.
Таблица SQL в каждой базе данных состоит из просто:
CREATE TABLE [dbo].[BulkInsertTest](
[id] [int] NOT NULL,
[name] [varchar](50) NOT NULL,
CONSTRAINT [PK_BulkInsertTest] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Код C # просто:
using (GISDbContext db = new GISDbContext())
{
List<BulkInsertTest> sqlFormattedRecords = new List<BulkInsertTest>();
for (int i = 20; i < 40; i++)
{
BulkInsertTest record = new BulkInsertTest();
record.Id = i;
record.Name = $"NameIs{i}";
sqlFormattedRecords.Add(record);
}
// Insert the newly loaded records into the table
using (var transactionScope = new TransactionScope())
{
db.BulkInsert(sqlFormattedRecords);
db.SaveChanges();
transactionScope.Complete();
}
}
Когда я указываю этот же код на одну базу данных, он работает.Когда я указываю на другую базу данных, это не так.Он завершается с ошибкой нулевого указателя в функции bulkinsert:
at EntityFramework.BulkInsert.ProviderFactory.Get(DbContext context)
Итак, я попытался воссоздать второй, чтобы использовать строку подключения первого БД.Второй набор tt-файла обратного poco буквально является копией tt-файла первого БД с измененным именем контекста на GISDbContext.
Можно подумать, это сработает.Это не так.Та же ошибка.
Переключение кода на использование первого обратного poco dbcontext все еще работает.
Так что это не строка подключения.Это не обратный файл .tt. Poco.Это не база данных или таблица.Но я не уверен, в чем причина проблемы.
Редактировать: поэтому в настоящее время я удалил второй (нерабочий) файл обратного poco tt и попытался обновить первый, чтобы увидеть, где он может произойти сбой.Все работало, пока я не попытался изменить DbContextName.Когда я это сделал, это сломалось.Неважно, на что я его поменяю, если это не оригинальное имя контекста, которое я использовал для рабочего файла tt, оно вылетает.
Это не имеет для меня никакого смысла.
Я пыталсяочистка раствора (один проект в этом решении).Я попытался очистить папки obj / bin после очистки решения.Нет эффекта.Это безумие.