在现有 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 表中手动创建列是个好主意吗?的主要内容,如果未能解决你的问题,请参考以下文章

动态 SQL 表是个好主意吗?

使用触发器链接到数据仓库中事实表中的时间维度是个好主意吗?

Cassandra Scaling:为多节点 Cassandra DB 使用通用挂载是个好主意吗?

在 PHP mkdir 中使用模式 0664 是个好主意吗?

MVC 身份 - AspNetUser 的用户概述

为 UI 的一部分创建另一个流程是个好主意吗?