Невозможно сохранить изменения в записях INSERTed - PullRequest
1 голос
/ 25 апреля 2019

У меня есть приложение 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, он был сгенерирован из базы данных.

1 Ответ

0 голосов
/ 26 апреля 2019

После тщательной отладки я обнаружил, что моя логика, которая пропускала Adding новые записи, не работала должным образом для этих двух таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...