使用Entity Framework我可以将相关表映射为类继承,并且有三种不同的方法来表示继承层次结构(weblogs):
网站mscblogs对这些方法中的每一种都有一个很好的解释。
我试图了解如何使用方法TPT(每种类型的表)映射我的表,但与mscblogs的示例不同,我需要为流畅的编程执行映射,如:
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
public class BillingDetailMap : EntityTypeConfiguration<BillingDetailEntity>
{
public BillingDetailMap()
{
// ...
this.Property(t => t.Number).HasColumnName("Number");
// ...
}
}
// ...
我正在寻找几个小时,但我找不到任何东西。我找到了许多示例,如何使用diagram,attributes和others来完成此操作,但是没有任何流畅的api。
如何在Entity Framework 4.1 Fluent API中映射TPT?
答案 0 :(得分:3)
映射每个类型的表(TPT)继承
在TPT映射方案中,所有类型都映射到个人 表。仅属于基本类型或派生类型的属性 存储在映射到该类型的表中。映射到的表 派生类型还存储连接派生表的外键 与基表。
modelBuilder.Entity<Course>().ToTable("Course");
modelBuilder.Entity<OnsiteCourse>().ToTable("OnsiteCourse");
在上一个问题上同时检查my answer,希望它有所帮助。
public class AppContext : DbContext
{
public DbSet<Item> Items { get; set; } // --> this dbset is required for TPT, if removed it will become TPCC
public DbSet<Food> Books { get; set; }
public DbSet<Book> Foods { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new ItemMap());
modelBuilder.Configurations.Add(new BookMap());
}
}
public class ItemMap : EntityTypeConfiguration<Food>
{
public ItemMap()
{
ToTable("Foods");
}
}
public class BookMap : EntityTypeConfiguration<Book>
{
public BookMap()
{
ToTable("Books");
}
}
public abstract class Item
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Food : Item { }
public class Book : Item { }