客户和员工的 efcore 身份
Identity with efcore for customer and staff
我目前为我的电子商务应用程序的客户和员工设计 table,并且我正在使用 asp.net 核心标识。我想知道我是否应该为员工和客户使用 1 table 用户(又名 aspnetuser),还是应该将它们分开并使用用户 ID 作为外键?如果用外键将它们分开 2 new table 是用户 ID,我如何使用用户管理器为员工和客户创建帐户?
谢谢。
您可以扩展基础 IdentityUser
class 以创建具有附加字段的 table,例如:
public class MyIdentityUser : IdentityUser<string>
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Type { get; set; }
...
其中 Type
字段可以是 Staff
或 Customer
。
或者您可以使用一个或多个额外的 table 并使用 IdentityUser class 中定义的 Id
来自 Microsoft.ASpNetCore.Identity:
public class IdentityUser<TKey> where TKey : IEquatable<TKey>
{
/// <summary>
/// Initializes a new instance of <see cref="IdentityUser{TKey}"/>.
/// </summary>
public IdentityUser() { }
/// <summary>
/// Initializes a new instance of <see cref="IdentityUser{TKey}"/>.
/// </summary>
/// <param name="userName">The user name.</param>
public IdentityUser(string userName) : this()
{
UserName = userName;
}
/// <summary>
/// Gets or sets the primary key for this user.
/// </summary>
[PersonalData]
public virtual TKey Id { get; set; }
...
您可以定义 Id
字段的类型,就像我之前的示例一样,并在自定义 table/tables 中的相关字段(例如 IdentityUserId
)上使用相同的类型。
如果扩展基础 IdentityUser
class,则需要使用此声明创建派生上下文,如下所示:
namespace MyProject.Infrastructure.Contexts
{
public class MyContext : IdentityDbContext<MyIdentityUser>
{
...
我目前为我的电子商务应用程序的客户和员工设计 table,并且我正在使用 asp.net 核心标识。我想知道我是否应该为员工和客户使用 1 table 用户(又名 aspnetuser),还是应该将它们分开并使用用户 ID 作为外键?如果用外键将它们分开 2 new table 是用户 ID,我如何使用用户管理器为员工和客户创建帐户? 谢谢。
您可以扩展基础 IdentityUser
class 以创建具有附加字段的 table,例如:
public class MyIdentityUser : IdentityUser<string>
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Type { get; set; }
...
其中 Type
字段可以是 Staff
或 Customer
。
或者您可以使用一个或多个额外的 table 并使用 IdentityUser class 中定义的 Id
来自 Microsoft.ASpNetCore.Identity:
public class IdentityUser<TKey> where TKey : IEquatable<TKey>
{
/// <summary>
/// Initializes a new instance of <see cref="IdentityUser{TKey}"/>.
/// </summary>
public IdentityUser() { }
/// <summary>
/// Initializes a new instance of <see cref="IdentityUser{TKey}"/>.
/// </summary>
/// <param name="userName">The user name.</param>
public IdentityUser(string userName) : this()
{
UserName = userName;
}
/// <summary>
/// Gets or sets the primary key for this user.
/// </summary>
[PersonalData]
public virtual TKey Id { get; set; }
...
您可以定义 Id
字段的类型,就像我之前的示例一样,并在自定义 table/tables 中的相关字段(例如 IdentityUserId
)上使用相同的类型。
如果扩展基础 IdentityUser
class,则需要使用此声明创建派生上下文,如下所示:
namespace MyProject.Infrastructure.Contexts
{
public class MyContext : IdentityDbContext<MyIdentityUser>
{
...