可以为 Null 的结构化类型 (Entity SQL)

结构化类型的 null 实例是不存在的实例。 这不同于其中所有属性都具有 null 值的现有实例。

本主题介绍可以为 Null 的结构化类型,包括哪些类型可以为 null 以及哪些代码模式会产生可以为 Null 的结构化类型的 null 实例。

可以为 Null 的结构化类型的种类

有三种可以为 Null 的结构化类型:

  • 行类型。

  • 复杂类型。

  • 实体类型。

能够产生结构化类型的 null 实例的代码模式

以下方案会产生 null 实例:

  • null 说明为结构化类型:

    TREAT (NULL AS StructuredType)
    
  • 将基类型向上转换为派生类型:

    TREAT (BaseType AS DerivedType)
    
  • 对 false 条件进行外部联接:

    Collection1 LEFT OUTER JOIN Collection2
    ON FalseCondition
    

    --或

    Collection1 RIGHT OUTER JOIN Collection2
    ON FalseCondition
    

    --或

    Collection1 FULL OUTER JOIN Collection2
    ON FalseCondition
    
  • 取消 null 引用的引用:

    DEREF(NullRef)
    
  • 从空集合获取 ANYELEMENT:

    ANYELEMENT(EmptyCollection)
    
  • 检查结构化类型实例是否为 null

    ...  for (int i = 0; i < reader.FieldCount; i++)
    {
        if (reader.IsDBNull(i))
        {
            Console.WriteLine(“[NULL]”);
        }
        else
        {
            Console.WriteLine(reader.GetValue(i).ToString());
        }
    }  
    

另请参见

概念

Entity SQL 概述