ODataConventionModelBuilder的约定是什么?

Luk*_*ett 5 odata asp.net-web-api

有许多使用ODataConventionModelBuilder简单,人为的模型的例子,通常只是一个类.

但实际上并没有解释这些惯例是什么; 如何编写符合约定的模型.它没有官方文档.

那么惯例是什么?

Luk*_*ett 3

从我到目前为止所看到的来看,这些约定是实体框架使用的约定,而不是 OData 的任何新约定。如果我错了,请纠正我。

\n\n

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

\n\n

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

\n\n

更新

\n\n

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

\n\n

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

\n\n

然而,这并不能帮助确定哪些是适用的或被使用的(ODataConventionModelBuilder如果有的话)。

\n\n
    \n
  • AssociationInverseDiscoveryConvention - 当相关类型之间仅存在一对导航属性时,提供约定来检测彼此相反的导航属性。
  • \n
  • AttributeToColumnAnnotationConvention - Code First 约定的通用类,用于从 .NET 属性读取属性并根据这些属性生成列注释。
  • \n
  • AttributeToTableAnnotationConvention - Code First 约定的通用类,它从 .NET 类型读取属性并根据这些属性生成表注释。
  • \n
  • ColumnAttributeConvention - 表示处理模型中属性上的\xc2\xa0ColumnAttribute\xc2\xa0 实例的约定。
  • \n
  • ColumnOrderingConvention - 表示应用通过\xc2\xa0ColumnAttribute\xc2\xa0 或 DbModelBuilder\xc2\xa0API 指定的列排序的约定。
  • \n
  • 列排序约定严格 - 应用通过\xc2\xa0ColumnAttribute\xc2\xa0 或 DbModelBuilder\xc2\xa0API 指定的列排序的约定。如果检测到重复配置的列顺序,则会引发此约定。
  • \n
  • 复杂类型属性约定 - 表示处理模型中类型上的\xc2\xa0ComplexTypeAttribute\xc2\xa0found 实例的约定。
  • \n
  • 复杂类型发现公约 - 表示将类型配置为复杂类型(如果该类型没有主键、没有映射的基本类型且没有导航属性)的约定。
  • \n
  • 并发检查属性约定 - 表示处理模型中属性上的\xc2\xa0ConcurrencyCheckAttribute 实例的约定。
  • \n
  • 习俗- 不覆盖配置的约定。
  • \n
  • 数据库生成属性约定 - 表示处理模型中属性上的\xc2\xa0DatabaseGenerateAttribute\xc2\xa0found 实例的约定。
  • \n
  • 十进制属性约定 - 将小数属性的精度设置为 18,小数位数设置为 2 的约定。
  • \n
  • 声明属性排序约定 - 表示将主键属性移至最先出现的约定。
  • \n
  • 外键关联多重性约定 - 表示一种约定,用于根据外键属性的 CLR 为空性来区分可选关系和必需关系。
  • \n
  • 外键发现公约 - 表示发现外键属性的约定的基类。
  • \n
  • foreignKeyIndexConvention - 表示引入外键索引的约定。
  • \n
  • foreignKeyNavigationPropertyAttributeConvention - 表示处理模型中导航属性上的 \xc2\xa0ForeignKeyAttribute\xc2\xa0found 实例的约定。
  • \n
  • foreignKeyPrimitivePropertyAttributeConvention - 表示处理模型中外键属性上的 \xc2\xa0ForeignKeyAttribute\xc2\xa0found 实例的约定。
  • \n
  • IdKeyDiscoveryConvention - 检测主键属性的约定。公认的命名模式(按优先顺序排列)为: 1. \'Id\' 2. [类型名称]Id 主键检测不区分大小写。
  • \n
  • IndexAttributeConvention - 用于发现属性上的\xc2\xa0IndexAttributeattributes 并在模型中生成IndexAnnotation\xc2\xa0column 注释的约定。
  • \n
  • InversePropertyAttributeConvention - 表示处理模型中属性上的\xc2\xa0InversePropertyAttribute\xc2\xa0 实例的约定。
  • \n
  • KeyAttributeConvention - 处理模型中属性上的 KeyAttribute\xc2\xa0 实例的约定。
  • \n
  • KeyDiscoveryConvention - 表示发现主键属性的约定的基类。
  • \n
  • ManyToManyCascadeDeleteConvention - 将级联删除添加到涉及多对多关系的两个表的联接表的约定。
  • \n
  • MappingInheritedPropertiesSupportConvention - 确保在映射继承属性时不会创建无效/不受支持的映射的约定
  • \n
  • MaxLengthAttributeConvention - 表示处理模型中属性上的\xc2\xa0MaxLengthAttribute\xc2\xa0 实例的约定。
  • \n
  • NavigationPropertyNameForeignKeyDiscoveryConvention - 发现名称为从属导航属性名称和主体类型主键属性名称组合的外键属性的约定。
  • \n
  • 非映射属性属性约定 - 表示处理模型中属性上的\xc2\xa0NotMappedAttribute\xc2\xa0found 实例的约定。
  • \n
  • 非映射类型属性约定 - 表示处理模型中类型上的\xc2\xa0NotMappedAttribute\xc2\xa0found 实例的约定。
  • \n
  • 一对多级联删除约定 - 提供一种约定,为任何所需的关系启用级联删除。
  • \n
  • 一对一约束介绍约定 - 提供将依赖实体类型的主键配置为一对一关系中的外键的约定。
  • \n
  • 复数实体集名称约定 - 表示将实体集名称设置为实体类型名称的复数版本的约定。
  • \n
  • PluralizingTableNameConvention - 表示将表名称设置为实体类型名称的复数版本的约定。
  • \n
  • PrimaryKeyNameForeignKeyDiscoveryConvention - 发现名称与主体类型主键属性名称匹配的外键属性的约定。
  • \n
  • PrimitivePropertyAttributeConfigurationConvention - 处理模型中基元属性上找到的 CLR 属性的约定的基类。
  • \n
  • PropertyAttributeConfigurationConvention - 处理在模型中类型的属性上找到的 CLR 属性的约定的基类。
  • \n
  • PropertyMaxLengthConvention - 表示为类型支持长度方面的属性设置最大长度的约定。默认值为 128。
  • \n
  • requiredNavigationPropertyAttributeConvention - 处理模型中导航属性上的RequiredAttribute\xc2\xa0 实例的约定。
  • \n
  • requiredPrimitivePropertyAttributeConvention - 表示处理模型中基元属性上的\xc2\xa0RequiredAttribute\xc2\xa0found 实例的约定。
  • \n
  • SqlCePropertyMaxLengthConvention - 表示当 SqlCe 作为提供程序时,为类型支持长度方面的属性设置默认最大长度 4000 的约定。
  • \n
  • StoreGenerateIdentityKeyConvention - 表示将整数主键配置为身份的约定。
  • \n
  • StringLengthAttributeConvention - 表示处理模型中属性上的\xc2\xa0StringLengthAttribute\xc2\xa0found 实例的约定。
  • \n
  • TableAttributeConvention - 表示处理模型中类型上的\xc2\xa0TableAttribute\xc2\xa0 实例的约定。
  • \n
  • TimestampAttributeConvention - 表示处理模型中属性上的 \xc2\xa0TimestampAttribute\xc2\xa0 实例的约定。
  • \n
  • TypeAttributeConfigurationConvention - 处理模型中找到的 CLR 属性的约定的基类。
  • \n
  • TypeNameForeignKeyDiscoveryConvention - 发现名称为主体类型名称和主体类型主键属性名称组合的外键属性的约定。
  • \n
\n