Вы также можете попробовать интерпретатор BeanShell :
Interpreter interpreter = new Interpreter();
interpreter.eval("result = (7+21*6)/(32-27)");
System.out.println(interpreter.get("result"));
Когда я поразил это ограничение, я изменил тип на uniqueidentifier
Использовать уникальный идентификатор или сгенерировать значение ключа 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;
}
}
Это предполагает, что вы не генерируете более одной записи за такт во время выполнения приложения (плюс время на остановку и перезапуск). Я считаю, что это разумное предположение, но если вам нужно абсолютно надежное (но более сложное) решение, прочтите самый высокий идентификатор из базы данных и увеличивайте его.
Я тоже столкнулся с этой проблемой ... в основном технический ответ, вероятно, лучший вариант , 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;)