c# - 在 MVC 中将 ASP.NET Identity 与我自己的实体结合使用

标签 c# asp.net asp.net-mvc entity-framework asp.net-identity-2

在我的“租车”解决方案中,我有一个单独的项目,其中包含我的所有实体,例如用户、角色、汽车、预订等。我使用 EntityFramework Code First 来生成数据库。所有这些都运行良好。 我已将 MVC 项目添加到我的解决方案中。现在我想充分利用 ASP.NET Identity 2.x 模型。 我的问题是:如何将MVC项目附带的ApplicationUser与我自己的User Class合并? 我的用户类别:

public partial class User
{
    public User()
    {
    }
    [Key]
    public int Id { get; set; }
    [StringLength(200)]
    public string FirstName { get; set; }
    [StringLength(200)]
    public string LastName { get; set; }
    [StringLength(200)]
    public string Address1 { get; set; }
    [StringLength(200)]
    public string Address2 { get; set; }
    [StringLength(200)]
    public string Address3 { get; set; }
    [StringLength(20)]
    public string ZipCode { get; set; }
    [StringLength(200)]
    public string City { get; set; }
    [StringLength(200)]
    public string Country { get; set; }
    [StringLength(200)]
    public string Phone { get; set; }
    [StringLength(200)]
    public string MobilePhone { get; set; }
    [StringLength(200)]
    public string WorkPhone { get; set; }
}

我是否应该将所有 User 属性移至 ApplicationUser 类,并在我自己的类(例如 Booking 类)中向 ApplicationUser 添加外键?

最佳答案

ApplicationUser 没有什么特别的。它只是继承自 IdentityUser 的类的默认实现。即使如此,这种继承也只是引导 Identity 中的所有功能,例如角色、声明等。

您可以完全删除 ApplicationUser 并使您的用户类继承于 IdentityUser,也可以将属性从您的用户类移动到 ApplicationUser并删除您的用户类别。无论哪种方式,结果都是一样的。

并且,是的,您希望在与“用户”相关的类和最终成为“用户”类的任何类之间创建外键。同样,ApplicationUser 并没有什么特别之处,因此,如果您选择坚持使用它,您可以像项目中的任何其他 POCO 一样对其进行设置,根据需要创建与其他实体的关系。

有些人建议从 ApplicationUser 继承用户类,但我认为这不是一个好主意。有充分的理由从用于身份的“用户”基类继承,但这里您处理的不是不同类型的用户,而是一种需要其他属性的用户类型。如果您无法访问基类来修改它,那么继承实际上只是实现这一目标的一种可接受的方法。在这里,你做到了。这是你的类(class);项目模板只是为您创建的。

关于c# - 在 MVC 中将 ASP.NET Identity 与我自己的实体结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30351702/

相关文章:

c# - 我如何创建两个部分来重点关注和其他部分进行写作?

c# - Catching a vbscript error from c#(从c#执行的vbscriot)

c# - 将可变大小的项目平衡为大致平衡的集合的算法

c# - 在 gridview 中进行数据绑定(bind)期间修改数据源行值

C# 'is' 关键字提供了意外的结果

c# - Visual Studio : Using external files (without copying them)

c# - 无法在 C# 中使用 SSH.NET 上传文件 SFTP - 权限被拒绝

asp.net - 在 IIS 级别跟踪网站的页面访问者和统计信息

c# 在 Controller 中使用 LINQ 语法构建错误

asp.net-mvc - 是否可以限制特定 Controller namespace 的路径?