在我的“租车”解决方案中,我有一个单独的项目,其中包含我的所有实体,例如用户、角色、汽车、预订等。我使用 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/