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 | 为备用关系数据库表、列和约束名称添加模型生成约定。 |