Мне нужно перенести данные из одной базы данных в другую. Ключи должны быть сохранены. Я использую EF с автоматически сгенерированным файлом .dbmx
. Я прочитал много ответов на подобную проблему и следую этим предложениям: я включаю IDENTITY_INSERT
непосредственно перед вставкой записи; на диаграмме базы данных я изменил StoreGeneratedPattern
на None
в столбце Id
(также пытался сделать то же самое, добавив соответствующий атрибут в свойство Id
).
Вот мой код:
var myEntity = new MyTable
{
Id = 12345,
Name = "Lorem ipsum",
BrandId = brandId,
};
MyContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT MY_TABLE_NAME ON");
MyContext.MyTable.Add(myEntity);
await MyContext.SaveChangesAsync(); //getting error here
Когда это делается в Management Studio, все работает нормально. Проблема появляется только при использовании Entity Framework.
Что выглядит странно, что я вижу в SQL Server Profiler, что команда INSERT_IDENTITY
выполняется, а вставка SQL идет со столбцом Id
, но, похоже, не выполняется. Когда я копирую и вставляю этот SQL-запрос, он работает нормально.