Создание первичного ключа платформы Entity Framework с использованием кода-первого вызывает ошибку [duplicate]

Мое обходное решение:

function add(a, b, precision) {
    var x = Math.pow(10, precision || 2);
    return (Math.round(a * x) + Math.round(b * x)) / x;
}

precision относится к числу цифр, которые вы хотите сохранить после десятичной точки во время добавления.

3
задан Luke McGregor 4 February 2016 в 22:15
поделиться

2 ответа

Это не работает, потому что ваше перечисление основано на uint. EF не поддерживает беззнаковые интегральные типы вообще (т. Е. Вы можете использовать тип uint для свойства), и поэтому он не будет работать и для свойств перечисления.

Я лично не большой поклонник перечисления ключи. Вот несколько причин:

  • значения в базе данных могут очень легко синхронизироваться с вашим определением enum
  • , это может быть выведено из поля, если база данных генерирует ключи - обычно база данных начинает генерировать идентификаторы из 1, но первый член перечисления равен 0
  • . Типы перечислений обычно имеют только несколько констант / членов. Хотя возможно иметь значения, которые находятся в диапазоне базового типа enum, но не имеют соответствующей константы в типе enum (и EF поддерживает это), это побеждает цель использования типа перечисления
4
ответ дан Pawel 25 August 2018 в 16:23
поделиться

Похоже, проблема связана с типом enum.

Я не нашел никакой информации, но быстрый тест показывает, что поддерживаются следующие типы

byte, short, int, long

, а следующие:

sbyte, ushort, uint, ulong
3
ответ дан Ivan Stoev 25 August 2018 в 16:23
поделиться