Я реализую пользовательский ASPNetMembership с использованием EF 4.0
Есть ли какая-либо причина, по которой я должен использовать Guid в качестве первичного ключа в таблицах пользователей?
Насколько я знаю Int как PK на SQL Server более производительный, чем строки.
И Int легче итерировать. Кроме того, в целях безопасности, если мне нужно передать какой-либо int id где-нибудь, например, в URL, я могу как-то его зашифровать и передать как строку без проб.
Но если я хочу использовать автоматически сгенерированный Guid на стороне SQL Server с использованием EF 4.0, мне нужно сделать этот трюк http://leedumond.com/blog/using-a-guid-as-an-entitykey- in-entity-framework-4 /
Я не вижу ни одного случая, почему я должен использовать Guid в качестве PK, может быть только один, если система будет иметь миллионы и миллионы пользователей, но также, теоретически , Guid может дублироваться когда-нибудь, не так ли?
В любом случае размер Int32 равен 2 147 483,647, это довольно много даже для очень-очень большой системы, но если этого числа все еще недостаточно, я могу пойти с Int64, в этом случае у меня может быть 9 223,372,036,854,775,880 строк. В значительной степени, да?
С другой стороны, M $ использует Guids в качестве PK в своей реализации ASPNetMembership. [aspnetdb]. [aspnet_Users] -> PK UserId Тип uniqueidentifier, должно быть несколько причин / объяснений, почему он это сделал?!
Может быть, у кого-то есть какие-то идеи / опыт по этому поводу?