【发布时间】:2017-03-09 21:47:55
【问题描述】:
我正在尝试实现两个 DbContext,它们映射到 MySql 中的两个单独的模式/数据库,它们之间有一个外键。
我知道以前有人问过类似的问题,但我找不到与 MySql
相关的答案我首先使用代码,但是在执行更新数据库时出现以下错误:
MultipleDbContext.ApplicationUser: : EntityType 'ApplicationUser' 没有定义键。定义此 EntityType 的键。
ApplicationUsers: EntityType: EntitySet 'ApplicationUsers' 基于没有定义键的类型'ApplicationUser'。
这些是我的 2 个 DbContext:
ApplicationDbContext
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext() : base("ApplicationDBContext") {}
public DbSet<Application> Applications { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new ApplicationConfiguration());
}
}
public class ApplicationConfiguration : EntityTypeConfiguration<Application>
{
public ApplicationConfiguration()
{
HasKey(x => x.ApplicationID);
Property(x => x.ApplicationID).IsRequired();
Property(x => x.ApplicationName).IsRequired();
HasRequired(x => x.PrimaryUser).WithMany().HasForeignKey(x => x.UserID);
}
}
ApplicationUserDbContext
public class ApplicationUserDbContext : DbContext
{
public ApplicationUserDbContext() : base("UserDBContext") {}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ApplicationUserConfiguration());
}
}
public class ApplicationUserConfiguration : EntityTypeConfiguration<ApplicationUser>
{
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
public ApplicationUserConfiguration()
{
HasKey(x => x.UserID);
Property(x => x.UserID).IsRequired();
Property(x => x.Name).IsRequired();
}
}
这是我的更新数据库语句:
更新数据库-ConfigurationTypeName MultipleDbContext.Migrations.Configuration
谢谢!
编辑 - 添加实体对象
public class Application
{
public int ApplicationID { get; set; }
public string ApplicationName { get; set; }
public int UserID { get; set; }
public virtual ApplicationUser PrimaryUser { get; set; }
}
public class ApplicationUser
{
public int UserID { get; set; }
public string Name { get; set; }
}
【问题讨论】:
标签: c# mysql entity-framework-6 dbcontext