在现有 AspNetUser 表中手动创建列是个好主意吗?
Posted
技术标签:
【中文标题】在现有 AspNetUser 表中手动创建列是个好主意吗?【英文标题】:Is it a good idea to manually create columns in existing AspNetUser table? 【发布时间】:2021-11-12 04:27:28 【问题描述】:我正在使用 Identity 3,我想在 AspNetUser 表中添加一些列。
我已经尝试先使用 EF Core Code 来实现它,它运行良好,但我需要先使用 DB。
我想知道,如果我将在数据库中手动创建列,然后创建具有相应属性的 ApplicationUser 类,它会起作用吗?
【问题讨论】:
当然,为什么不呢?你是否应该这样做是一个意见问题(我的意见:不)。 这不是 DB 优先方法的唯一选择吗?我已经排除了开始使用 Code first 的 Identity,因为我已经读过在同一个项目中结合 Code 和 DB first 方法不是一个好主意。 我的意思是,不要更改AspNetUser
表。 ASP.Net Identity 用于身份验证。不要将其与业务问题混为一谈。
【参考方案1】:
是的,应该可以,我以前做过。 然而,随着时间的推移,我最终不得不添加这么多,以至于它变得一团糟。 所以最终我将这些额外的列重构到它们自己的相关表中: 例如:User_AdditionalDetails
这是一个巨大的痛苦,因为我有实时用户并且必须编写脚本来迁移每个人的数据等。
这样,您只需为相关表添加一个包含所有这些额外信息的 FK。 它还对代码进行了整理,并提供了仅在需要时才加载不同的用户属性集的好处。
如果它是用于用户的应用程序范围属性,例如“区域”,它决定了应用程序核心功能的行为,那么我会说直接将它添加到主 ApplicationUser 类中。
【讨论】:
以上是关于在现有 AspNetUser 表中手动创建列是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章
Cassandra Scaling:为多节点 Cassandra DB 使用通用挂载是个好主意吗?