Мы используем базовый объект со свойствами, такими как версия (datetime, необходимая для NHibernate) и guid (как ключ).Недостатки использования Int64 универсально вместо int (C#)
Он также имеет поле Id (int) с двумя функциями. Во-первых, чтобы связать с устаревшим ключом приложения, если он есть. Во-вторых, как сокращенный код: например, файлы иногда создаются на основе этих, которые выглядели бы уродливыми и длинными, используя наш ключ-ключ. Мой вопрос не в самом деле о плюсах и минусах базовых объектов, но о том, чтобы ввести этот идентификатор в Int64?
Это не повлияет на то, как он хранится в нашей базе данных MS SQL Server. Будет ли это больше затрат в нашем кеше и памяти ?. Неужели это действительно волнует?
Мне интересно услышать другие недостатки, помимо производительности. Подумайте также, что эти значения, вероятно, также будут показаны через веб-сервисы третьим сторонам.
Альтернативой является рассмотрение исключений больших целых чисел по мере их возникновения и их реализация специально в производных сущностях. Недостатком является то, что это нужно сделать в коде и что мы будем делать, когда обнаружим некоторые случаи, когда при производстве больших целых чисел? Разумеется, для проверки фактических ошибок была бы допущена проверка ввода, но она может ограничить расширение данных.
Где будет проблема переносимости? Я не говорю, что их нет, просто путают, где это может быть. Я не могу легко представить себе общую платформу, которая не имеет 64-битного целочисленного типа. –
Я бы сказал, что это не должно быть проблемой, если все платформы реализуют свои типы на основе Common Language Specification. Или я ошибаюсь? – lowglider
Существует больше возможностей переносимости, чем CLR. Ходят слухи, что там есть другие платформы;) –