C# 如何自定义AspNet Identity 2.0以仅生成所需的标识表?

C# 如何自定义AspNet Identity 2.0以仅生成所需的标识表?,c#,asp.net-mvc-5,asp.net-identity,C#,Asp.net Mvc 5,Asp.net Identity,我是Identity 2.0模块的新手,我想控制数据库中Identity模块生成的表,因为有时我不需要所有表,有时甚至不需要每个表中生成的大部分列。那么,有什么方法可以控制生成的表和列吗?SQL Server中的表如果不使用,成本很低。它们不占用任何空间,也不需要努力维护。删除框架为您生成的空表/字段毫无意义。这已经被提了好几次了,我还没有看到一个好的答案。因为你想做的事情给你带来了绝对零的好处,并且在你的应用程序中增加了大量的工作和后期的维护 但是,如果您坚持这样做,您需要开始分解Identi

我是Identity 2.0模块的新手,我想控制数据库中Identity模块生成的表,因为有时我不需要所有表,有时甚至不需要每个表中生成的大部分列。那么,有什么方法可以控制生成的表和列吗?

SQL Server中的表如果不使用,成本很低。它们不占用任何空间,也不需要努力维护。删除框架为您生成的空表/字段毫无意义。这已经被提了好几次了,我还没有看到一个好的答案。因为你想做的事情给你带来了绝对零的好处,并且在你的应用程序中增加了大量的工作和后期的维护

但是,如果您坚持这样做,您需要开始分解
IdentityDbContext
——您需要实现自己的
DbContext
,它只包含您想要的表。然后,您需要实现自己的
IUserStorage
,以处理缺少表的问题。下面是一个学习如何实现自定义存储的示例


您可以找到标识的源代码,复制相关存储代码,删除不需要的位,并添加
NotSupportedException
,用于将变得无用的方法。

这些表是标识和所选提供程序需要的功能。你需要这些表格,否则这些功能将无法工作。您想禁用哪些功能?为什么?此外,还可以轻松删除Notes字段。用于存储密码哈希的
PasswordHash
是另一回事。你想做什么?比如说,我不打算使用索赔表和登录表。假设我不打算实现锁定用户或检查电话验证的功能。在这种情况下,我不想要与声明和外部登录相关的标识部分,也不想要用户表中的某些列。谢谢您的洞察力。这将是一个很大的帮助。