7、Entity Framework 数据库优先:实体继承关系及视图、存储过程使用

Entity Framework 数据库优先:实体继承关系及视图、存储过程使用

1. 按具体类的表继承(Table per Concrete Class,TPC)

当数据库为所有逻辑实体包含单独的表,且这些表有一些公共字段时,可以使用按具体类的表继承(TPC)。例如,存在 Employee 和 Vendor 两个单独的表,数据库设计的一个主要问题是表中列的重复,从数据库规范化的角度来看,这是不推荐的。

要实现 TPC 继承,需要执行以下任务:
1. 生成默认的实体数据模型。
2. 创建抽象类。
3. 修改 CDSL 以适应更改。
4. 指定映射以实现按类型的表(TPT)继承。
5. 通过 DBContext 对象使用实体。

1.1 生成默认的实体数据模型

Entity Framework 为这两个表提供了单独的实体。从应用程序域的角度来看,如果将所有公共属性移动到一个公共抽象类中,我们可以更好地使用这些实体。Employee 和 Vendor 实体将包含特定于它们的属性,并从这个抽象类继承以使用所有公共属性。

1.2 创建抽象类

向概念模型中添加一个名为 Worker 的新实体,并将公共属性移动到这个实体中。然后从属性窗口将这个类标记为抽象类。

1.3 修改 CDSL 以适应更改

由于已经将公共属性移动到抽象类中,EDMX 文件的概念架构定义语言(CSDL)部分已经设置好。问题将出现在存储架构定义语言(SSDL)和映射规范语言(MSL)中。首先,需要更改 SSDL,让 Entity Framework 知道抽象类 Wor

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值