Сгенерированные сервером ключи и сгенерированные сервером значения не поддерживаются Компактным SQL Server

Вы также можете попробовать интерпретатор BeanShell :

Interpreter interpreter = new Interpreter();
interpreter.eval("result = (7+21*6)/(32-27)");
System.out.println(interpreter.get("result"));

35
задан Sergey Aldoukhov 16 March 2009 в 06:05
поделиться

3 ответа

Когда я поразил это ограничение, я изменил тип на uniqueidentifier

24
ответ дан mostlytech 24 September 2019 в 00:41
поделиться

Использовать уникальный идентификатор или сгенерировать значение ключа bigint / int вручную - ваш лучший вариант.

Возможно, что-то вроде этого ...

    private static object lockObject = new object();

    private static long nextID = -1;

    public static long GetNextID()
    {
        lock (lockObject)
        {
            if (nextID == -1) nextID = DateTime.UtcNow.Ticks; else nextID++;
            return nextID;
        }
    }

Это предполагает, что вы не генерируете более одной записи за такт во время выполнения приложения (плюс время на остановку и перезапуск). Я считаю, что это разумное предположение, но если вам нужно абсолютно надежное (но более сложное) решение, прочтите самый высокий идентификатор из базы данных и увеличивайте его.

17
ответ дан 27 November 2019 в 07:11
поделиться

Я тоже столкнулся с этой проблемой ... в основном технический ответ, вероятно, лучший вариант , GUID очень просты в использовании, а риск конфликта ключей очень низок (хотя и существует).

  • Почему вы должны помечать ключ как созданный сервером, если он не поддерживается и вызовет исключение? Из цитируемого абзаца трудно сделать вывод.

Поскольку SQL Server (не Compact) поддерживает его, и другие третьи стороны тоже могут его поддерживать ... Entity Framework не только для SQL Server Compact;)

Идентификаторы GUID очень просты в использовании, а риск столкновения ключей очень низок (хотя и существует).

  • Почему вы должны помечать ключ как созданный сервером, если он не поддерживается и вызовет исключение? Из цитируемого абзаца трудно сделать вывод.

Поскольку SQL Server (не Compact) поддерживает его, и другие третьи стороны тоже могут его поддерживать ... Entity Framework не только для SQL Server Compact;)

Идентификаторы GUID очень просты в использовании, а риск столкновения ключей очень низок (хотя и существует).

  • Почему вы должны помечать ключ как созданный сервером, если он не поддерживается и вызовет исключение? Из цитируемого абзаца трудно сделать вывод.

Поскольку SQL Server (не Compact) поддерживает его, и другие третьи стороны тоже могут его поддерживать ... Entity Framework не только для SQL Server Compact;)

4
ответ дан 27 November 2019 в 07:11
поделиться
Другие вопросы по тегам:

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