Я добавил новый столбец в объект и использовал EF для обновления модели из базы данных.
Обычно мы делаем следующее:
context.BulkInsert(records, GetBulkInsertOptions());
context.SaveChanges();
Но это, кажется, не работает для новой колонки. Если я сделаю следующее, это сработает, но, очевидно, не идеально.
foreach (var r in records)
{
context.MyDBObject.Add(r);
context.Entry(r).State = EntityState.Modified;
context.SaveChanges();
}
Кто-нибудь может пролить свет на это? Кроме того, если я удалю строку в базе данных до того, как она будет сохранена, она вставит все, кроме добавленного мной нового столбца.
редактировать: Использование Entity Framework v6.2.0 и EntityFramework.BulkInsert v6.0.3.8
изменить 2: если я удалю строку и попытаюсь вставить новый объект, используя только следующие
context.MyTable.Add(test);
context.SaveChanges()
Это также вставляет объект, но не включает мой новый столбец. Это заставляет меня поверить, что это больше ошибка с EF и меньше с BulkInsert, как я упоминал ранее.
Пожалуйста, всегда отмечайте версию EF, которую вы используете.
@GertArnold Готово. Спасибо за предложение.
@Nicolas, EntityFramework.BulkInsert и Z.EntityFramework.Extensions — это не одна и та же библиотека. Поэтому я не уверен, что вы отмечаете проблему № 279 в EFE в своем комментарии.
Соответствует ли ваша модель объекта таблице базы данных?
@RamilAliyev Да, это было. Смотрите мой ответ ниже для более подробного объяснения.





Проблема была вызвана триггерами в таблице в Mssql.
Выполнение context.Database.Log = Console.WriteLine; Помогло нам определить, что Entity Framework отправляет правильный запрос в SQL. Тестирование запроса в SQL показало, что новый столбец не сохраняется.
Может быть связано с этой ошибкой: github.com/zzzprojects/EntityFramework-Extensions/issues/279