我有一个Web API 2应用程序,在其中我使用了asp.net Identity 2.0和Entity Framework。在我的MySql数据库中,我添加此表ajt_collaborator

CREATE TABLE `ajt_collaborator` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `marital_status` enum('M','MLLE','MME') DEFAULT NULL,
  `address` text,
  `Nom` text,
  `Prenom` text,
  `id_user_fk` varchar(128) NOT NULL,
  `deletion_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `collaborator_user_fk` (`id_user_fk`),
  CONSTRAINT `collaborator_user_fk` FOREIGN KEY (`id_user_fk`) REFERENCES `aspnetusers` (`Id`)
)


指的是aspnetusers

CREATE TABLE `aspnetusers` (
  `Id` varchar(128) NOT NULL,
  `Hometown` text,
  `Email` varchar(256) DEFAULT NULL,
  `EmailConfirmed` tinyint(4) NOT NULL,
  `PasswordHash` text,
  `SecurityStamp` text,
  `PhoneNumber` text,
  `PhoneNumberConfirmed` tinyint(4) NOT NULL,
  `TwoFactorEnabled` tinyint(4) NOT NULL,
  `LockoutEndDateUtc` datetime DEFAULT NULL,
  `LockoutEnabled` tinyint(4) NOT NULL,
  `AccessFailedCount` int(11) NOT NULL,
  `UserName` varchar(256) NOT NULL,
  PRIMARY KEY (`Id`)
)


我需要将这些表合并到第二个表中,并在应用程序中识别aspnetusers的其他属性。


有可能这样做吗?
实现这个目标需要采取哪些步骤?

最佳答案

如果要将ajt_collaborator合并到AspNetUsers。

您可以从ajt_collaborator表向ApplicationUser实体类的镜像字段添加其他属性。

public class ApplicationUser : IdentityUser
{
    //...

    public string Address { get; set; }
}


您会发现在通用IdentityUser中将AspNetUser表列定义为属性。

重新创建架构时,这会将新字段添加到AspNetUsers表中。
或者,您可以使用迁移而无需重新创建架构。 https://msdn.microsoft.com/en-us/data/jj591621.aspx

如果要将AspNetUsers合并到ajt_collaborator。

然后,您可以将ApplicationUser映射到ajt_collaborator表。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    //...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<ApplicationUser>().ToTable("ajt_collaborator");
    }
}


再次将所需属性添加到ApplicationUser实体类,以镜像ajt_collaborator表中的列。

07-28 13:48