Asp.net mvc 无法使用TPH模式创建数据库。
我正在开发MVC应用程序。 我正试图通过模型优先技术来构建这个项目。 我创建了三个类Asp.net mvc 无法使用TPH模式创建数据库。,asp.net-mvc,asp.net-mvc-3,entity-framework,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,我正在开发MVC应用程序。 我正试图通过模型优先技术来构建这个项目。 我创建了三个类 公司-基本/父类 Customer-从Company类继承的子类 Party类-从Company类继承的子类 现在,在生成DB时,它会创建三个独立的表,这是我不想要的。 我想为这些实体创建一个表 我认为VS 2012不支持TPH 怎么办 您需要在构建模型的过程中进行自定义。您可以这样重写OnModelCreating方法: public class Company { // need this prop
怎么办 您需要在构建模型的过程中进行自定义。您可以这样重写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'));
}
}
上市公司
{
//需要此属性对客户具有C值或对第三方具有P值。
公共字符CustomerOrParty{get;set;}
//其他财产。
// ...
}
公共类客户:公司
{
//代码
}
公共类政党:公司
{
//代码
}
公共类EFContext:DbContext
{
公共数据库集公司{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Map(m=>m.Requires(“CustomerOrParty”).HasValue('C'))
.Map(m=>m.Requires(“CustomerOrParty”).HasValue('P');
}
}
您可以在这里看到一个教程:您可以通过覆盖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);
}
}
公共类EFContext:DbContext
{
公共数据库集公司{get;set;}
公共数据库集客户{get;set;}
公共数据库集参与方{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.ToTable(“公司”);
modelBuilder.Entity()
.ToTable(“公司”);
modelBuilder.Entity()
.ToTable(“公司”);
}
}
您的公司是抽象类吗?是的,公司是抽象类。。。