【问题标题】:Just what are the conventions of the ODataConventionModelBuilder?ODataConventionModelBuilder 的约定是什么?
【发布时间】:2015-03-04 11:25:42
【问题描述】:

有很多将ODataConventionModelBuilder 与简单、人为的模型一起使用的示例,通常只是一个类。

但是没有什么可以真正解释约定是什么;如何编写符合约定的模型。没有官方文档。

那么约定是什么?

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    据我目前所见,这些约定是实体框架使用的约定,而不是 OData 的任何新约定。如果我错了,请纠正我。

    有关代码优先约定的更多信息,请参见下文,但在 Julie Lerman 的书中还有更多内容,但我无法在网络上找到它们的详尽列表。

    http://blogs.msdn.com/b/efdesign/archive/2010/06/01/conventions-for-code-first.aspx

    更新

    EF 建模约定系统是可插拔的,每个约定都由一个封装行为的类表示,这些类在此处列出:

    http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions(v=vs.113).aspx

    但是,如果有的话,这对于ODataConventionModelBuilder 中哪些适用或使用没有帮助。

    • AssociationInverseDiscoveryConvention - 当相关类型之间仅存在一对导航属性时,提供约定以检测导航属性是否相互反转。
    • AttributeToColumnAnnotationConvention - Code First 约定的通用类,它从 .NET 属性中读取属性并根据这些属性生成列注释。
    • AttributeToTableAnnotationConvention - Code First 约定的通用类,它从 .NET 类型读取属性并基于这些属性生成表注释。
    • ColumnAttributeConvention - 表示处理模型中属性上的 ColumnAttribute 实例的约定。
    • ColumnOrderingConvention - 表示应用通过 ColumnAttribute 或 DbModelBuilder API 指定的列排序的约定。
    • ColumnOrderingConventionStrict - 应用通过 ColumnAttribute 或 DbModelBuilder API 指定的列排序的约定。如果检测到重复的配置列顺序,则会抛出此约定。
    • ComplexTypeAttributeConvention - 表示处理模型中类型上的 ComplexTypeAttribute 实例的约定。
    • ComplexTypeDiscoveryConvention - 如果类型没有主键、没有映射的基类型和导航属性,则表示将其配置为复杂类型的约定。
    • ConcurrencyCheckAttributeConvention - 表示处理模型中属性上的 ConcurrencyCheckAttributefound 实例的约定。
    • 约定 - 不会覆盖配置的约定。
    • DatabaseGeneratedAttributeConvention - 表示处理模型中属性上的 DatabaseGeneratedAttribute 实例的约定。
    • DecimalPropertyConvention - 将十进制属性的精度设置为 18 并缩放为 2 的约定。
    • DeclaredPropertyOrderingConvention - 表示将主键属性移到第一个出现的约定。
    • ForeignKeyAssociationMultiplicityConvention - 表示基于外键属性的 CLR 可空性区分可选和必需关系的约定。
    • ForeignKeyDiscoveryConvention - 表示发现外键属性的约定的基类。
    • ForeignKeyIndexConvention - 表示为外键引入索引的约定。
    • ForeignKeyNavigationPropertyAttributeConvention - 表示处理模型中导航属性上的 ForeignKeyAttribute 实例的约定。
    • ForeignKeyPrimitivePropertyAttributeConvention - 表示处理模型中外键属性上的 ForeignKeyAttribute 实例的约定。
    • IdKeyDiscoveryConvention - 检测主键属性的约定。按优先顺序识别的命名模式是: 1. 'Id' 2. [type name]Id 主键检测不区分大小写。
    • IndexAttributeConvention - 用于发现属性上的 IndexAttribute 属性并在模型中生成IndexAnnotation 列注释的约定。
    • InversePropertyAttributeConvention - 表示处理模型中属性上的 InversePropertyAttribute 实例的约定。
    • KeyAttributeConvention - 处理模型中属性上的 KeyAttribute 实例的约定。
    • KeyDiscoveryConvention - 表示发现主键属性的约定的基类。
    • ManyToManyCascadeDeleteConvention - 约定从涉及多对多关系的两个表中向连接表添加级联删除。
    • MappingInheritedPropertiesSupportConvention - 确保在映射继承属性时不会创建无效/不受支持的映射的约定
    • MaxLengthAttributeConvention - 表示处理模型中属性上的 MaxLengthAttribute 实例的约定。
    • NavigationPropertyNameForeignKeyDiscoveryConvention - 发现外键属性的约定,其名称是从属导航属性名称和主体类型主键属性名称的组合。
    • NotMappedPropertyAttributeConvention - 表示处理模型中属性上的 NotMappedAttribute 实例的约定。
    • NotMappedTypeAttributeConvention - 表示处理模型中类型上的 NotMappedAttribute 实例的约定。
    • OneToManyCascadeDeleteConvention - 提供约定以启用任何所需关系的级联删除。
    • OneToOneConstraintIntroductionConvention - 提供一种约定,将依赖实体类型的主键配置为一对一关系中的外键。
    • PluralizingEntitySetNameConvention - 表示将实体集名称设置为实体类型名称的复数形式的约定。
    • PluralizingTableNameConvention - 表示将表名设置为实体类型名称的复数形式的约定。
    • PrimaryKeyNameForeignKeyDiscoveryConvention - 发现名称与主体类型主键属性名称匹配的外键属性的约定。
    • PrimitivePropertyAttributeConfigurationConvention - 处理模型中原始属性上的 CLR 属性的约定的基类。
    • PropertyAttributeConfigurationConvention - 处理模型中类型属性上的 CLR 属性的约定的基类。
    • PropertyMaxLengthConvention - 表示为类型支持长度方面的属性设置最大长度的约定。默认值为 128。
    • RequiredNavigationPropertyAttributeConvention - 处理模型中导航属性上的 RequiredAttribute 实例的约定。
    • RequiredPrimitivePropertyAttributeConvention - 表示处理模型中原始属性上的 RequiredAttribute 实例的约定。
    • SqlCePropertyMaxLengthConvention - 当 SqlCe 是提供者时,表示为类型支持长度方面的属性设置默认最大长度 4000 的约定。
    • StoreGeneratedIdentityKeyConvention - 表示将整数主键配置为身份的约定。
    • StringLengthAttributeConvention - 表示处理模型中属性上的 StringLengthAttribute 实例的约定。
    • TableAttributeConvention - 表示处理模型中类型上的 TableAttribute 实例的约定。
    • TimestampAttributeConvention - 表示处理模型中属性上的 TimestampAttribute 实例的约定。
    • TypeAttributeConfigurationConvention - 处理模型中发现的 CLR 属性的约定的基类。
    • TypeNameForeignKeyDiscoveryConvention - 发现外键属性的约定,其名称是主体类型名称和主体类型主键属性名称的组合。

    【讨论】:

      【解决方案2】:

      我知道的最好的解释在这里

      Routing Conventions in ASP.NET Web API 2 Odata

      注意这是 Odata 3,而不是 odata 4

      【讨论】:

      • 链接可能会随着时间的推移而失效,请编辑您的答案并在此处写入/粘贴相关信息。
      猜你喜欢
      • 2013-10-11
      • 2011-08-20
      • 2012-11-09
      • 2013-04-09
      • 2011-10-06
      • 1970-01-01
      • 2022-06-28
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多