【发布时间】:2018-09-30 22:41:25
【问题描述】:
我目前有多个具有多个 DbContext 的项目:
项目(DbContext):
- 型号
- DataAccessLayer (EntityContext)
- 服务层
- 网页(IdentityContext)
我在模型的项目中有一个名为 Department 的模型,它由 EntityContext 创建,我在 Web 项目的 ApplicationUser.cs 中引用它。
当 IdentityContext 尝试创建 AspNet 表时,它还尝试重新创建部门表,我收到以下错误:
“数据库中已经有一个名为‘Departments’的对象。”
这是我的身份文件:
IdentityContext 是我的 Web 项目:
ApplicationDbContext.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext() : base("EntityContext", throwIfV1Schema: false)
{
Configuration.LazyLoadingEnabled = false;
Configuration.AutoDetectChangesEnabled = false;
Configuration.ProxyCreationEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
}
static ApplicationDbContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, ApplicationDbInitializer>());
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
ApplicationDbInitializer.cs
public class ApplicationDbInitializer : DbMigrationsConfiguration<ApplicationDbContext>
{
public ApplicationDbInitializer()
{
AutomaticMigrationsEnabled = false;
#if DEBUG
AutomaticMigrationDataLossAllowed = true;
AutomaticMigrationsEnabled = true;
#endif
}
protected override void Seed(ApplicationDbContext context)
{
base.Seed(context);
}
ApplicationUser.cs
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
/// <summary>
/// Linked Department Id
/// </summary>
public Guid? DepartmentId { get; set; }
/// <summary>
/// Linked Department Object
/// </summary>
[ForeignKey("DepartmentId")]
public virtual Department Department { get; set; }
}
然后我在 EntityContext 中注释掉了“public DbSet Department { get; set; }”,现在它构建了,但是当我尝试访问它时,我得到了这个错误:
“实体类型 Department 不是当前上下文模型的一部分。”
我理解这两个错误,但我不知道如何让它们处于相同的上下文中,因为它们位于不同的项目中。
【问题讨论】:
标签: c# entity-framework asp.net-identity