使用Identity将表添加到Code-First ASP.NET应用程序

时间:2016-10-29 20:27:30

标签: c# asp.net asp.net-mvc entity-framework

我有一个我使用MVC模板创建的ASP.NET应用程序,其中Identity设置为单个用户帐户。这意味着我有一个身份的DbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

我有一个看起来像这样的本地数据库

enter image description here

我想在我的架构中添加一个新表来获取信用卡信息。该表将命名为dbo.CreditCards,并将有三列,ID int,UserName varchar(128),cardNumber char(16),expirationDate date和CVV char(3)。如何修改此上下文以使用此模式中的那些列创建该表?

2 个答案:

答案 0 :(得分:2)

使用Entity Framework最简单。通过查看StackOverflow中EntityFramework标记here的“信息”部分,您可以了解很多。您可以阅读书籍或访问其中列出的网站。

要回答您的问题,只需创建CreditCard实体,如下所示:

public class CreditCard
{
    public int Id { get; set; }

    [StringLength(128)]
    public string UserName { get; set; }

    [MinLength(16), MaxLength(16)]
    [Column(TypeName = "CHAR")]
    public string CardNumber { get; set; }

    [Column(TypeName = "DATE")]
    public DateTime ExpirationDate { get; set; }

    [MinLength(3), MaxLength(3)]
    [Column(TypeName = "CHAR")]
    public string CVV { get; set; }
}

而您的DbContext只需添加一个名为CreditCards的新属性,该属性的类型为DbSet<CreditCard>

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{

    public DbSet<CreditCard> CreditCards { get; set; }        

    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

如果您重新创建或更新数据库,您将拥有该表。

答案 1 :(得分:2)

代码优先意味着当您想要添加内容时,首先将其添加到代码中。

  • 添加信用卡信息类。
  • 定义类属性ID,UserName和CardNumber
  • public DbSet<CreditCardInfo> CreditCards { get; set; }添加到ApplicationDbContext
  • 您的项目已启用迁移,因为您使用Identity and Identity启用迁移
  • 使用Add-Migration AnyName
  • 从Package Manager控制台添加新迁移
  • 使用Update-Datebase
  • 再次更新数据库以反映来自Package Manager控制台的迁移

您可以参考此tutorial获取更详细的演练。