我有一个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表中的列。