问题 如何在ASP.NET IDENTITY中添加自定义表?


我在我的Web表单应用程序上使用ASP.NET标识。 以下是我目前的身份表:

当前身份表

 - Role
 - User
 - UserClaim
 - UserLogin
 - UserRole

我需要添加一个新表来存储其他信息。

新表:UserLogs

新表中的字段:

  • UserLogID(PK)
  • 用户ID(FK)
  • IP地址
  • LoginDate

如何添加此自定义表?我知道如何在现有表中添加自定义字段但我不知道如何实现这一点。

感谢您为我的问题找到解决方案的努力。


6784
2017-08-11 12:19


起源

可能重复 使用自定义表扩展asp.net mvc 5标识 检查答案我认为这就足够了。 - mybirthname
让我检查然后我会告诉你。谢谢 - Kevin Maxwell
@mybirthname我对这一行有疑问。 public virtual ApplicationUser User {get;组;在这里,我应该添加我的日志表中存在的列是否正确? - Kevin Maxwell


答案:


public class ApplicationUser : IdentityUser
{

    public virtual ICollection<UserLog> UserLogs { get; set; }

}

public class UserLog
{
    [Key]
    public Guid UserLogID { get; set; }

    public string IPAD { get; set; }
    public DateTime LoginDate { get; set; }
    public string UserId { get; set; }

    [ForeignKey("UserId")]
    public virtual ApplicationUser User { get; set; }
}

public System.Data.Entity.DbSet<UserLog> UserLog { get; set; }

10
2017-08-12 10:05



我已经执行了Identity 2.0脚本来将表添加到我的自定义数据库中。然后,我使用DB第一种方法添加了模型。现在,我正在尝试添加已经完成的列。我首先将列添加到ASPNetUser表,然后将属性添加到Application User,然后更新模型。但是,它会生成错误。能告诉我有关步骤和顺序的信息吗? - Coding
@ h.salman你可以更具体地说明这个错误吗? - CodeMaster


首先,我建议你理解一下 代码优先实体框架,因为这是第一次创建时创建用户表的方式 新的MVC5应用

这里 如果要通过EntityFramework使用代码优先数据库创建,可以找到它是如何实现的。

在了解了一些关于它的核心内容之后,您可以直接转到Models文件夹,直接转到> AccountModel.cs

在那里你有一个扩展DbContext的类,里面包含构造函数,它可以访问将要使用数据库的连接字符串。

如果你在第一次阅读代码时懒得很重要的话:

DbSet意味着dbset中的模型即将创建到表中。类中的变量是即将创建的列。但是如果你想要外键和东西,你肯定要阅读代码优先类型。

祝你好运!


2
2017-08-11 13:15



感谢这篇有用的文章,但我没有使用MVC,它是(Web Forms)。 - Kevin Maxwell
先生,据我所知和所见,EntformsFramework的相同结构也用于Webforms。我建议你确认它几乎一样。如果没有,那我很抱歉,我希望你很快就能找到你想要的东西。 - Festim Cahani
我同意你的意见,但我的项目中没有AccountModel.cs。在模型下我有IdentityModels.cs。 - Kevin Maxwell
那是因为你使用的是Identity 2.0 @KevinMaxwell。 - scheien
@scheien我认为Identity 2.0是最新的?正确? - Kevin Maxwell