插件 API

EF Core 扩展通常需要将逻辑添加到核心 EF 和提供程序组件。 一般来说,这需要创建派生组件并替换内部服务提供程序中的原始组件。 当多个扩展希望更改同一组件时,这会变得很复杂。 为应对这种情况,我们提供了插件 API,以允许多个扩展提供其他逻辑。

服务列表

下面是插件 API 的列表。

服务 说明
ITypeMappingSourcePlugin 在 .NET 类型和基元存储类型之间添加映射。
IRelationalTypeMappingSourcePlugin 在 .NET 类型和基元关系数据库类型之间添加映射。
IConventionSetPlugin 添加模型生成约定。
IMemberTranslatorPlugin 为 .NET 属性添加 SQL 转换。
IMethodCallTranslatorPlugin 为 .NET 方法添加 SQL 转换。
IAggregateMethodCallTranslatorPlugin 为 .NET 可枚举方法添加 SQL 转换。
IEvaluatableExpressionFilterPlugin 强制执行某些表达式的服务器评估。
IProviderCodeGeneratorPlugin 构建提供程序和 DbContext 选项的基架。

示例

下面是使用这些 API 的一些扩展:

分机 说明
Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite 为 SpatiaLite 的类型添加类型映射和 SQL 转换。
Microsoft.EntityFrameworkCore.SqlServer.HierarchyId 为 SQL Server 的 hierarchyid 类型添加类型映射和 SQL 转换。
Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite 为 SQL Server 的地理和几何类型添加类型映射和 SQL 转换。
EFCore.CheckConstraints 为关系数据库检查约束添加模型生成约定。
EFCore.NamingConventions 为备用关系数据库表、列和约束名称添加模型生成约定。