由于guid被用作主键等,使用内置asp.net身份验证提供程序是一个坏主意吗
我正在进行一个项目,需要在asp.net mvc网站中扩展用户成员字段 我经历了这些不同的思维过程由于guid被用作主键等,使用内置asp.net身份验证提供程序是一个坏主意吗,asp.net,sql-server,authentication,guid,Asp.net,Sql Server,Authentication,Guid,我正在进行一个项目,需要在asp.net mvc网站中扩展用户成员字段 我经历了这些不同的思维过程 使用“用户名”将用户加入到记录中。非常糟糕的想法,因为用户想要更改其用户名等 然后我想我可以将userId的guid连接到其他表 然后我想,如果将来我需要将id用作一个简单的id,那么使用guid可能是不好的。所以我设置了一个链接表,将guid连接到ints 我决定我不需要它,所以又回到了使用guid将东西链接在一起,这使得请求更加简单 阅读大量关于使用guid作为聚集索引时性能糟糕的讨论 我现在
谢谢大家。如果您担心默认aspnet成员资格提供程序使用
GUID
PK的性能,只需实现您自己的成员资格提供程序,并使用int-identity(1,1)
主键即可
老实说,编写自己的成员资格提供程序非常简单,如果默认实现只涉及GUID
PK,那么请将代码更改为使用整数而不是GUID。这最多不应该超过一个小时。要完成此图,请在数据库上运行aspnet_sql.exe以获取成员数据库,然后更改表和存储过程以匹配对源所做的更改
以下是guid是比int或bigint更糟糕的选择,这在任何地方都被讨论和记录过。它们可怕吗?不是真的。有一些可怕的故事,应用程序在每个键和外键上都使用guid,还有你拥有的东西,但它们是例外 guid的独特性有它的优点,如果使用得当,它们可以毫无问题地完成工作。我更愿意使用使用guid的默认提供程序实现,而不是使用自己的实现。与默认技能相比,正确且优于默认技能的技能集非常重要。我不是以贬损的方式说这句话,但是如果您需要了解guid对性能的影响的指导,那么您可能还没有准备好自己动手
使用默认值,测试它,测量然后决定,我的2c 什么使您认为使用GUID有什么问题?GUID不会影响性能。当然,它们比使用Int慢,但它们并不可怕。我在一个拥有140多万成员、流量巨大且速度极快的网站上使用.net成员身份。@John这是这个问题的后续问题:您使用Newsequentialid()方法吗?我刚刚在aspnet_用户的“默认值或绑定”上更改了此项,它似乎已经接受了此项更改。@Rex M,感谢您的帮助,也刚刚在另一页上看到了您的链接,用于设置顺序guid。非常感谢,我想我暂时可以使用guid,只要我在使用Newsequentialid()方面做了正确的事情。但感谢您提供了一个很好的链接,指向我在未来某个时候可能需要的内容。我认为实际上,查看源代码是一个好主意,因为它让您了解默认提供程序的黑盒是如何适合的together@RussCam-很抱歉没有给你正确的答案,但是看看这个问题,这主要是关于是否有必要切换,而不是在需要时如何切换。非常感谢你的建议。谢谢,是的,我看到使用内置的有很多默认值,我只是有点希望有一个开关,如果我需要的话,可以将它设置为int。但是如果需要的话,我可能会修改源代码。