我有两个完全不同的项目网站 喜欢:
adminPanel(asp mvc site),utilities(classLibrary),mobileConnection(asp web api)
adminPanel项目和MobileConnection项目具有可分离的身份验证,但他们的帐户有一些共享字段,
公用事业代码(与两个项目共享):
public class MobileApplicationUser : IdentityUser
{
public virtual Profile Profile { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<MobileApplicationUser> manager, string authenticationType)
{
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
return userIdentity;
}
}
public class AdminApplicationUser : IdentityUser
{
public virtual Organization organization { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<AdminApplicationUser> manager, string authenticationType)
{
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
return userIdentity;
}
}
管理员项目代码:
public class ApplicationDbContext : IdentityDbContext<AdminApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<AdminApplicationUser>().ToTable("AdminUser");
modelBuilder.Entity<IdentityRole>().ToTable("AdminRole");
modelBuilder.Entity<IdentityUserRole>().ToTable("AdminUserRole");
modelBuilder.Entity<IdentityUserClaim>().ToTable("AdminUserClaim");
modelBuilder.Entity<IdentityUserLogin>().ToTable("AdminUserLogin");
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<Profile> Profiles { get; set; }
public DbSet<Competition> Competitions { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<Organization> Organizations { get; set; }
}
mobileConnection项目代码:
public class ApplicationDbContext : IdentityDbContext<MobileApplicationUser>
{
public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<AdminApplicationUser>().ToTable("MobileUser");
modelBuilder.Entity<IdentityRole>().ToTable("MobileRole");
modelBuilder.Entity<IdentityUserRole>().ToTable("MobileUserRole");
modelBuilder.Entity<IdentityUserClaim>().ToTable("MobileUserClaim");
modelBuilder.Entity<IdentityUserLogin>().ToTable("MobileUserLogin");
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<Profile> Profiles { get; set; }
public DbSet<Competition> Competitions { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<Organization> Organizations { get; set; }
}
我的个人资料和组织有关系, 所以...我不能更新数据库两个项目,并有我的目标! 我该怎么办?
答案 0 :(得分:1)
假设这是代码第一个问题。 是的,您可以使用1个DB Context访问多个数据库,或者让多个DBContexts访问1个数据库。管理迁移是关键挑战。
有界DBContext和实体框架
是开始研究的好地方