C# 使用ASP.NET核心标识时,最好扩展用户类或编写与其相关的单独实体

C# 使用ASP.NET核心标识时,最好扩展用户类或编写与其相关的单独实体,c#,asp.net-core,C#,Asp.net Core,我想使用ASP.NET core提供的标识系统。我阅读的大多数教程都通过添加自定义属性来扩展用户类,如下所示: public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } // etc... } 当您只有很少的属性时,这似乎很好。但是,如果我想添加一长串其他属性,比如它们的完整地址、成员身份

我想使用ASP.NET core提供的标识系统。我阅读的大多数教程都通过添加自定义属性来扩展用户类,如下所示:

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    // etc...
}
当您只有很少的属性时,这似乎很好。但是,如果我想添加一长串其他属性,比如它们的完整地址、成员身份等,该怎么办

从设计的角度来看,编写单独的实体来存储这些自定义属性是否更好(甚至可能),并在ApplicationUse类中添加可用于访问这些实体的导航属性,如下所示:

public class ApplicationUser : IdentityUser
{
    public Address Address { get; set; }
    public IEnumerable<Membership> Memberships { get; set; }
    // Other navigation properties
}
公共类应用程序用户:IdentityUser
{
公共广播地址{get;set;}
公共IEnumerable成员身份{get;set;}
//其他导航属性
}

大多数专业开发人员是如何做到这一点的?我是编程新手,在业余时间学习编程,以便在软件开发领域找到一份工作

考虑这些属性是否需要与
ApplicationUser
分开存在

例如,
地址
不太可能独立存在并拥有自己的密钥。换句话说,您可能不需要在多个
应用程序用户
记录之间共享
地址
记录。这意味着您可能不需要
地址
表。对于这样的属性,考虑使用.< /P>
但是,
成员资格
记录可能需要独立存在并拥有自己的密钥。它可能是
应用程序用户
记录和另一个具有有效负载(例如
到期日期
成本
)的记录(如
)之间的连接。这意味着您可能需要一个
Memberships
join表。对于这样的属性,考虑使用关系。

可以使用类。无论在何处使用partial-overall,以及它是否是一种更好的方法,都是一个完全不同的主题。@20这确实是我的问题,简单地向用户表添加列还是编写我导航到的单独表更好。我在想,如果我把这个展示给潜在的雇主看,他们可能会问我的设计选择。我想获得这个权利您扩展IdentityUser以向用户表中添加更多列,是否拆分这些属性的问题是一个SQL设计问题,与ASP.NET core无关。无论如何,我建议在表变得非常大或者数据可以被其他表引用之前不要拆分。