有两个结构完全相同的表:RegCard, UpgradeCard,能否在EF中定义一个CardBase基类,然后再定义RegCard和UpgradeCard分别继承自CardBase来实现?
CodeFirst模式。
这个地方就能体现FluentAPI的的优势。
先针对RegCard,定义好实体类、定义好DbContext(比如名叫RegCardDbContext)、并在OnModelCreating中定义好映射关系,其中包含:
modelBuilder.Entity<Card>().ToTable("RegCard");
然后,定义一个UpgradeCardDbContext,继承自RegCardDbContext,在OnModelCreating中只需增加一行代码:
base.OnModelCreating(modelBuilder); modelBuilder.Entity<Card>().ToTable("UpgradeCard");
问题就解决了。
就是说,没办法在同一个DbContext里实现?
@笨笨蜗牛: 用同一个DbContext感觉应该可以,但没试过。你可以试一下。这样定义映射:
modelBuilder.Entity<RegCard>().ToTable("RegCard"); modelBuilder.Entity<UpgradeCard>().ToTable("UpgradeCard");
EF没那么聪明,它有一套自己理解的原则,我觉得最好在实体下面为EF专门分一层作为EF映射实体。