如何使用子类型鉴别器

本文关键字:鉴别 类型 何使用 | 更新日期: 2023-09-27 18:37:26

假设我有一个包含许多子类型表的超类型表。 我有兴趣使它们不相交的子类型,因为超类型表每行仅指向一个可能的子类型表。在网络上,我遇到了子类型鉴别器的描述,这是放入超类型表中的新列,这是一个小代码(通常是字符),用于标识该行属于哪个子类型

在实践中,我找不到任何实际的例子。 如果我使用 C# 工作,我是否应该查询表的子类型鉴别器列,然后针对一些键>值列表([子类型鉴别器]->subtype_table_name)进行测试以创建正确的 SQL 来连接正确的表?

或者,SQL Server中是否已经有一些视图/SQL查询语法用于此目的?

基本上,我想知道我必须在哪个级别实际执行逻辑以使鉴别器有用。

如何使用子类型鉴别器

您的查询将包含以下内容:

select *
from Root
left join Child1 on ... AND Root.Discriminator = 'C1'
left join Child2 on ... AND Root.Discriminator = 'C2'

希望 SQL Server 在开始从子表中读取之前计算加法连接谓词。不过,这并不能保证。

这种模式的好处是它可以推广到任意查询,即使对于具有不同子类型的多行也是如此。