У меня есть приложение Entity Framework, модель которого сгенерирована из базы данных (подход Database First).
Моя функция добавляет новые записи в DbSet
. После того как я добавлю их все, я пытаюсь сохранить изменения в таблице в базе данных через db.SaveChanges()
. Эта же функция используется для всех таблиц в базе данных. Все они имеют одинаковый формат:
CREATE TABLE [dbo].[Table1](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Column1] [nvarchar](200) NULL,
[Column2] [nvarchar](200) NULL,
[Column3] [decimal](20, 10) NULL,
[cs_Table1] AS (checksum([Column1],[Column2])),
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]
Некоторые таблицы имеют более или менее столбцы. Проблема в том, что импорт новых записей работает для большинства таблиц, а для двух - нет. Я проверял много раз. Они ничем не отличаются. Когда я пытаюсь сохранить изменения в этих двух таблицах, я не получаю ошибок, которые он выполняет. Я отладил его, он правильно пропускает новые экземпляры, но на db.SaveChanges()
он ничего не делает.
Я читал в других постах, что иногда у вас есть какая-то копия базы данных, и она там копируется. Как я могу это проверить? И почему это работает на некоторых таблицах, а на некоторых нет. Это та же база данных.
Фрагмент, в котором я сохраняю изменения:
using (FileStream stream = File.Open(excel, FileMode.Open))
{
My_Model db = new My_Model ();
var class = new ExcelExtractingClass(db);
class.ImportFromExcel(stream);
db.SaveChanges();
}
ImportFromExcel
- длинная функция. Но я уверен, что это работает. Все, что он делает в отношении моей проблемы, использует: DbSet.Add(entity)
. Но это работает для большинства таблиц. DbSet определен в My_Model
, он был сгенерирован из базы данных.