Принудить Entity Framework следовать ограничениям, определенным в базе данных

Я пошел искать библиотеки JavaScript для оценки математических выражений и нашел этих двух перспективных кандидатов:

  • JavaScript Expression Evaluator : Меньше и, надеюсь, более легкий. Позволяет алгебраические выражения, подстановки и ряд функций.
  • mathjs : Позволяет создавать комплексные числа, матрицы и единицы.

Создано для использования как в браузере JavaScript, так и в Node.js.

1
задан marc_s 8 March 2019 в 10:32
поделиться

1 ответ

Значения по умолчанию, определенные в структуре таблицы SQL Server, применяются только , если у вас есть оператор INSERT, который пропускает эти столбцы - например, не предоставляет никакого значения (включая NULL) для этих столбцов.

EF, тем не менее, всегда будет предоставлять значения для всех столбцов, как определено объектом - например, он предоставит NULL для любых значений, не установленных явно. Насколько я знаю, с этим ничего не поделаешь.

Есть несколько обходных путей:

  • вы можете создать хранимую процедуру , которая будет принимать только те значения, которые вы хотите указать, и запускать SQL [114 ] оператор, который опускает столбцы со значениями по умолчанию, например

    INSERT INTO dbo.MyTable (colA, colB, ..., colZ)  -- *exclude* "Column1" here!
    VALUES ( .........)
    

    При этом SQL Server будет использовать настроенные значения по умолчанию для тех столбцов, для которых определен один столбец и которые не упомянуты в списке столбцов оператора INSERT INTO [ 1115]

  • вы, вероятно, могли бы сделать что-то похожее на уровне EF, указав второй класс, который был бы почти идентичен вашему текущему классу сущности - но это оставило бы столбцы, которые вы хотите установить с помощью настроенных по умолчанию значений SQL Server. Если вы сохраните эту «уменьшенную» сущность, EF создаст инструкцию SQL, которая будет включать только те столбцы , о которых он знает (в терминах полей этого уменьшенного класса), и это приведет в основном к то же самое, что и выше - утверждение INSERT INTO, что исключает те столбцы, которые автоматически устанавливаются с помощью настроенного ограничения по умолчанию для SQL Server

0
ответ дан marc_s 8 March 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: