复杂类型对象(实体框架)

复杂类型是实体类型的非标量属性,实体类型允许在实体内组织标量属性。与实体相似,复杂类型由标量属性或者其他复杂类型属性组成。复杂类型不能在没有父实体或复杂类型的情况下存在。因为复杂类型没有键,所以对象服务不能脱离父对象来管理复杂类型对象。有关更多信息,请参见复杂类型 (EDM)

当 Entity Framework 工具生成表示实体类型的对象时,这些对象从 EntityObject 进行继承。同样,为复杂类型生成的对象从 ComplexObject 继承。这些类都继承自 StructuralObject 基类。复杂类型对象的标量属性可像其他标量属性一样被访问。有关更多信息,请参见如何:使用复杂类型创建和执行对象查询(实体框架)

使用表示复杂类型的对象时,请注意以下几点:

  • 复杂类型属性不能为 null。调用 SaveChanges 并且遇到 null 复杂对象时,将引发 InvalidOperationException。与实体的标量属性一样,复杂对象的标量属性可以为 null

  • 复杂类型不能从其他复杂类型继承。

  • 当在复杂类型对象图的任何位置更改任何属性时,父类型的属性将被标记为已更改,并在调用 SaveChanges 时更新复杂类型对象图中的所有属性。

  • 继承自 ComplexObject 的复杂对象在访问复杂类型属性而不是实例化父对象时进行实例化。

  • 自定义数据类继承自 EntityObject 时,复杂类型类必须继承自 ComplexObject

  • 实现自定义数据类接口(例如 IEntityWithKey)时可以使用复杂类型。但是,将复杂类型用于自定义数据类的建议做法是从 EntityObjectComplexObject 继承。有关更多信息,请参见自定义对象(实体框架)

另请参见

其他资源

使用对象(实体框架)