Afzaal Ahmad Zeeshan
Помимо того, что говорит Решение 1, я должен рекомендовать другой подход. Этот подход заключается в использовании string в качестве поля ID в ядре Entity Framework, и платформа автоматически будет использовать Guid для генерации уникальных идентификаторов. Я всегда этим пользовался, и это позволяет мне спокойно спать по ночам.
Внесите следующие изменения,
public class Employee {
public string EmployeeId { get; set; }
}
И оставьте все остальное ядру EF.
Каковы же минусы? Ну, вы не можете увидеть, был ли сотрудник зарегистрирован раньше или позже, просто взглянув на его удостоверение личности. Однако вы можете сказать, что по их
joiningDate
поле. Кроме того, SQL Server особенно использует начальное значение. Это может расти экспоненциально и приведет к таким ответам, как, 1, 2, 3, 10, 15, 17, 18, 100, 101, 500, и так далее. Неужели ты этого хочешь? Не совсем. Таким образом, примите мой совет, если можете, используйте строку в качестве поля первичного ключа и живите в мире. :-)
Увеличение идентификатора столбца SQL Server 2012 с 6 до 1000+ при 7 - й записи- переполнение стека[
^]
Я могу предположить, что вы действительно хотите продемонстрировать этот идентификатор на своем идентификаторе или что-то еще, в этом случае попробуйте сохранить этот EmployeeNumber как отдельное поле, в котором хранится порядковое значение, приходящее в последовательности, когда они присоединяются к вашей организации, и оставьте первичный ключ тем, который генерируется ORM—
мои извинения перед нормализацией-это-необходимо-гиков.
Afzaal Ahmad Zeeshan
Честно говоря, я еще не пробовал этого, идея состоит в том, чтобы использовать тип UUID для хранения данных, и поскольку EF должен сопоставить столбец с UUID, string может быть полезен—мне придется попробовать его с Guid, и это тоже с различными источниками данных, а не только с SQL Server.
Хотя спасибо за подсказку. :-)
Кроме того, недавно я начал использовать Sequelize ORM, и у него есть тип данных для этого, который я использую. Я подумаю об использовании этого когда-нибудь.