首页 新闻 会员 周边

EF中的实体继承关系

0
悬赏园豆:10 [已解决问题] 解决于 2012-05-31 15:06

有两个结构完全相同的表:RegCard, UpgradeCard,能否在EF中定义一个CardBase基类,然后再定义RegCard和UpgradeCard分别继承自CardBase来实现?

CodeFirst模式。

无之无的主页 无之无 | 大侠五级 | 园豆:5095
提问于:2012-05-28 17:10
< >
分享
最佳答案
0

这个地方就能体现FluentAPI的的优势。

先针对RegCard,定义好实体类、定义好DbContext(比如名叫RegCardDbContext)、并在OnModelCreating中定义好映射关系,其中包含:

modelBuilder.Entity<Card>().ToTable("RegCard");

然后,定义一个UpgradeCardDbContext,继承自RegCardDbContext,在OnModelCreating中只需增加一行代码:

base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Card>().ToTable("UpgradeCard");

问题就解决了。

收获园豆:9
dudu | 高人七级 |园豆:30994 | 2012-05-28 17:54

就是说,没办法在同一个DbContext里实现?

无之无 | 园豆:5095 (大侠五级) | 2012-05-28 17:58

@笨笨蜗牛: 用同一个DbContext感觉应该可以,但没试过。你可以试一下。这样定义映射:

modelBuilder.Entity<RegCard>().ToTable("RegCard");
modelBuilder.Entity<UpgradeCard>().ToTable("UpgradeCard");
dudu | 园豆:30994 (高人七级) | 2012-05-28 18:02
其他回答(1)
0

EF没那么聪明,它有一套自己理解的原则,我觉得最好在实体下面为EF专门分一层作为EF映射实体。

收获园豆:1
today4king | 园豆:3499 (老鸟四级) | 2012-05-28 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册