我正在开发MVC应用程序。 我试图通过模型第一技术来构建项目。 我创建了三个类。
现在在生成数据库时,它创建了三个单独的表,我不想要。 我想为这些实体创建单个表。
我认为VS 2012不支持TPH。
怎么办?
答案 0 :(得分:0)
您需要在构建模型的过程中进行自定义。你这样做会覆盖OnModelCreating
方法,如下所示:
public class Company
{
// need this property has value C to customer or P to party.
public char CustomerOrParty { get; set; }
// other properties.
// ...
}
public class Customer : Company
{
// code
}
public class Party : Company
{
// code
}
public class EFContext : DbContext
{
public DbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Map<Customer>(m => m.Requires("CustomerOrParty").HasValue('C'))
.Map<Party>(m => m.Requires("CustomerOrParty").HasValue('P'));
}
}
您可以在此处查看教程:http://blogs.msdn.com/b/wriju/archive/2011/05/17/code-first-ef-4-1-table-per-hierarchy.aspx
答案 1 :(得分:0)
您可以通过覆盖OnModelCreating将模型映射到表。
public class EFContext : DbContext
{
public DbSet<Company> Companies { get; set; }
public DbSet<Customer> Customers{ get; set; }
public DbSet<Party> Parties{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.ToTable("Company);
modelBuilder.Entity<Customer>()
.ToTable("Company);
modelBuilder.Entity<Party>()
.ToTable("Company);
}
}