我目前正在使用ASP.NET 4.5 MVC创建一个Web应用程序,MySQL支持我的模型。
首次登录时(以及之后的任何时间),用户输入Web应用程序所需的持久信息(名称,DoB,地址等) 将会有几个到几十个必需的设置,我听说最佳实践要求即使在表中只有10列也要过去,需要重新评估您的范例。
让我们说道,我可以将设置分解为不同的类型。是否有任何表现/组织/可用性/等。是否可以为每个不同的部分创建不同的表?
跟进问题:持久用户数据是否应与用户表存储在同一个表中,或者设置是否有自己的表?我注意到有一个AspNetUsers表存储了一些基本信息。我可以用它来存储设置吗?
谢谢!
答案 0 :(得分:1)
您希望扩展Identity 2 Framework:
http://typecastexception.com/post/2014/06/22/ASPNET-Identity-20-Customizing-Users-and-Roles.aspx
答案 1 :(得分:1)
在我看来,打破不同表上的所有用户信息有0个好处。只有当你有一些1:N的关系时才这样做,但如果你使用一个包含很多列的表,那就没有问题了。
如果您使用Entity Framework和Asp.Net Identity,则可以使用自定义信息扩展您的AspNetUsers表。只需创建一个从IdentityUser扩展的类:
public class User : IdentityUser
{
[MaxLength(50)]
[Required]
public string MyAdditionalData { get; set; }
[Required]
public int Age { get; set; }
}
然后在Context类中:
class YourAppContext : IdentityDbContext<User>
{
public YourAppContext()
: base("YourAppContext")
{
}
}
使用迁移,Entity Framework能够根据此类添加/修改列。
问候