我刚刚开始为我的下一个项目使用Entity Framework,我正在努力解决以下问题。我有以下ApplicationUser
课程:
public class ApplicationUser : IdentityUser
{
public string Name { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
我有两个本课程固有的课程:
public class TrainerUser : ApplicationUser
{
public virtual ICollection<ClientUser> Clients { get; set; }
}
public class ClientUser : ApplicationUser
{
public string TrainerId { get; set; }
public TrainerUser Trainer { get; set; }
}
公司课程如下:
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<TrainerUser> Trainers { get; set; }
public virtual ICollection<ClientUser> Clients { get; set; }
}
我无法弄清楚我如何使用流畅的API在ApplicationUsers
表中不包含3个不同的companyId列。
目前,我有以下流畅的API配置:
modelBuilder.Entity<TrainerUser>().HasRequired(c => c.Company).WithMany(t => t.Trainers).HasForeignKey(c => c.CompanyId);
modelBuilder.Entity<ClientUser>().HasRequired(c => c.Company).WithMany(c => c.Clients).HasForeignKey(c => c.CompanyId);
有人能指出我正确的方向吗?
答案 0 :(得分:0)
尝试将这些添加到您的代码中。
modelBuilder.Entity<TrainerUser>().ToTable("TrainerUser");
modelBuilder.Entity<ClientUser>().ToTable("ClientUser");
如果我找对你。您正在尝试创建表示Table Per Hierarchy (TPT)的结构。在链接上阅读更多相关信息。
基本上发生的事情是实体框架在实体中遇到继承。它默认尝试创建表是通过使用discriminator列创建所有派生实体的所有属性集的列。
您要创建的内容是层次结构中每个类的单独表格。