Использование Effort (EF Testing Tool) с вычисленным столбцом


Вопрос

У меня есть ряд интеграционных тестов, которые напрямую обращаются к БД - создайте объекты с предварительными условиями тестирования - выполняет тесты, а затем очищает их потом - однако я выиграл, чтобы попробовать один и тот же подход в памяти.

Я только что использовал Effort в своем проекте, и он работает очень легко. Однако я столкнулся с проблемой, которую я пытался, но не смог решить.

Одна из таблиц, которые мне нужны, заполнены фиктивными данными - в качестве тестового условия - содержит вычисленный столбец (nvarchar, а не null). В рамках теста я действительно не забочусь о значении этого столбца - но даже если я попытаюсь вставить фиктивные данные, мои данные будут проигнорированы, а затем я получаю ошибку с ошибкой:

"Column 'x' cannot be null. Error code: GenericError"

В моих тестах я использую тот же файл edmx, который используется фактическим кодом. Это не позволяет мне постоянно обновлять копию edmx.

Есть ли способ, с помощью которого я могу заставить тест обновить edmx (во время выполнения), чтобы столбец был нулевым не вычисленным столбцом? [overriding OnModelCreating] или есть способ вставить значение по умолчанию (что-нибудь для этого столбца), чтобы остановить эту ошибку? [переопределение SaveChanges]

В настоящее время я пробовал следующее:

  • Прикрепление объектов с использованием .Attach () вместо .Add ()
  • Установка EntityState без изменений после добавления
  • Принуждение значения через Entry.OriginalValues ​​[это значения, поскольку объект находится в добавленном состоянии]

Редактировать:

Я попытался переопределить метод OnModelCreating , но безрезультатно, поскольку это DB-First.

"Column 'x' cannot be null. Error code: GenericError"

Популярные ответы

Откройте файл EDMX в редакторе XML, найдите свою сущность под StorageModels и добавьте в определение столбца StoreGeneratedPattern="Computed" .

Но если вы обновите или удалите и добавите эту таблицу, вы потеряете эту модификацию. На самом деле вы можете написать консольное приложение, которое обновит ваш edmx-файл и добавит StoreGeneratedPattern="Computed" где это необходимо, и вы можете добавить это приложение для предварительной сборки событий в студии.





Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему