EF Core 扩展通常需要将逻辑添加到核心 EF 和供应商组件中。 这通常需要创建派生组件并替换内部服务提供商中的原始组件。 当多个扩展想要更改同一组件时,这变得很复杂。 在这些情况下,我们提供插件 API,以允许多个扩展提供其他逻辑。
服务列表
下面是插件 API 的列表。
| Service | 说明 |
|---|---|
| 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 | 为备用关系数据库表、列和约束名称添加模型生成约定。 |