首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asp.net mvc5 Identity?

Asp.net mvc5 Identity?
EN

Stack Overflow用户
提问于 2014-09-24 12:49:39
回答 2查看 185关注 0票数 0

当运行Asp.net项目时,MVC5Identity 2.0将自动创建5个表。

在这里,我的问题是为什么像AspnetUser这样的一些表,它的项'Id‘类型被定义为字符串。

字符串看起来像GUID,但为什么它不定义为guid类型,而是使用字符串。

它是从字符串中转移数据类型,还是在查询数据时做一些事情?

我不明白为什么它定义为字符串,但看起来像guid?

另一个表和AspnetRole有同样的问题,它的项目'UserId','RoleId‘也被定义为字符串。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-09-24 15:29:02

我猜这是有不同的原因。

其中一个原因是Guids的插入性能,在大量数据(聚集索引)之后,Guids的插入性能将变得越来越慢。

另一个原因是在不同的数据库中处理Guid的不同。Microsoft Sql Server有一个Guid类型的UniqueIdentifier,MySql将它们存储为字符串,Oracle存储Guid的原始字节...

我希望这部分解释了你的问题,因为不是完全的:)...

票数 1
EN

Stack Overflow用户

发布于 2014-09-24 17:53:14

标识框架不仅是为代码优先方法创建的,也是为了生成具有给定字段或数据类型的数据库表。Identity framework可以用于现有数据库或迁移旧的asp.net成员提供程序,或者我们可以使用我们自己的表名和额外的数据库字段在identity表上存储更多数据。

此外,aspnetUser表(即用户表)的Id用作字符串,因为我们可以根据需要对此字段使用Guid、integer、long等。

例如:如果您决定使用integer作为aspnetUser表(User表)的Id,那么数据库字段将是自动增量int (或bigInt等)。字段。但是为了满足实体框架的迁移需求,您需要进行模型绑定。

默认情况下,当我们使用开箱即用的asp.net身份框架时,我们会将Guid插入到此字段中。

当您为注册用户定义了角色时,将有记录添加到AspnetRole表中,这也完全取决于我们在表中定义的字段,就像我之前讨论的那样。如果我们决定使用integer作为aspnetUser表的Id,那么AspnetRole表字段将根据与aspnetUser表字段的关系进行更新。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26008799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档