原谅我,如果这个问题已经回答了什么地方,我一直有一个很难找到这个问题的解决方案。
我试图建立EF代码第一次上MVC4项目。 我有一个用户和客户,无论从人继承。 那么我有客户多到多关系,并与用户一到多关系模板对象。 下面是我有它设置:
楷模
public class Person
{
[Key]
public int PersonID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string FullName
{
get
{
return String.Format("{0} {1}", FirstName, LastName);
}
}
public string Email { get; set; }
public virtual List<Template> Templates { get; set; }
}
public class User : Person
{
....
}
public class Customer : Person
{
....
}
public class Template
{
public int TemplateId { get; set; }
public string TemplateName { get; set; }
public virtual List<Customer> Customers { get; set; }
[ForeignKey("User")]
public int UserId { get; set; }
public virtual User User { get; set; }
}
CONTEXT
public class ProjectContext : DbContext
{
public ProjectContext()
: base("name=ProjectDB")
{
}
public DbSet<Template> Templates { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions
.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Template>()
.HasMany(x => x.Customers)
.WithMany(x => x.Templates)
.Map(x => x.MapLeftKey("TemplateId")
.MapRightKey("PersonId")
.ToTable("TemplateCustomer")
);
}
}
如果我删除的人DBSet出的背景下能正常工作,但设置了TPT的继承。 我想用TPH继承,但是当我能够与人DBSet迁移的背景下,电抗器:
NavigationProperty“模板”是无效的。 FromRole在AssociationType“MvcProject.Models.Template_Customers” Template_Customers_Target'类型“MvcProject.Models.Customer”必须完全匹配与此NavigationProperty声明的类型“MvcProject.Models.Person”。
我要去哪里错了吗?