首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用现有的TPT声明TPH (代码优先)

使用现有的TPT声明TPH (代码优先)
EN

Stack Overflow用户
提问于 2013-01-21 17:20:27
回答 1查看 209关注 0票数 0

我有几个继承了一个抽象基类的类。它通过fluent API映射到现有数据库(使用table-Per-Concrete Type,即未映射到任何表的基抽象类)。

现在我想在我的代码中添加一些统计数据,对我来说最好的解决方案是对3-4个新类使用TPH方法。它可能继承也可能不继承上述相同的类。

但我不知道如何指导EF对这3-4个班级使用TPH-approach。我需要添加带鉴别器的校正表吗?可以使用吗?或者我需要以某种方式通过fluent API指定它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 03:15:08

我找到了。您不需要以某种方式指定要使用TPH的EF。足以做到以下几点:

创建类层次结构

代码语言:javascript
复制
class Base { ... }
class Derived1 : Base { ... }
class Derived2 : Base { ... }
.......
class DerivedN : Base { ... }

创建名为您的基本类型的表(否则,不要忘记使用ModelBuilder映射它),它具有公共列(Base的内容),并且每个派生类型中的每个公共属性都有一列。添加“判别符”列 (nvarchar(128),但我建议使用varchar,除非您使用unicode类名称)。

在DbContext的后继者中,只添加一个DbSet:DbSet<Base> Data { get; set; },并将其用于CRUD操作。

这就是全部!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14435570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档