我们正在dotnet core 2.0中使用RelationalMetadataExtensions读取关系数据库特定的元数据。我们计划将应用程序升级到 3.0。但是RelationalMetadataExtensions在dotnet core 3.0中是过时的。以下代码的 dotnet 核心 3.1 行为将是什么
// Following code only working for mysql.
var items = _context.Model.GetEntityTypes();
foreach (var item in items)
{
//RelationalMetadataExtensions.Relational([NotNullAttribute] this IEntityType entityType)
if (item.Relational() is RelationalEntityTypeAnnotations extensions)
{
extensions.Schema = database;
}
}
根据更新日志,您的代码将不起作用。您将需要使用平展版本。
不幸的是,问题 214 似乎仍然悬而未决。我可以看到 GetSchema 已经实现,但没有找到 SetSchema。您可以提出一个新的GitHub请求,以查看它何时(是否(到达那里。
编辑
这里有一个 SetSchema 检查。向伊万·斯托耶夫致敬。
特定于提供程序的元数据 API 更改
跟踪问题 #214
新行为
特定于提供程序的扩展方法将被展平:
IProperty.Relational().ColumnName -> IProperty.GetColumnName()
IEntityType.SqlServer().IsMemoryOptimized -> IEntityType.IsMemoryOptimized()
PropertyBuilder.UseSqlServerIdentityColumn() -> PropertyBuilder.UseIdentityColumn()
为什么
此更改简化了上述扩展方法的实现。
缓解措施
使用新的扩展方法。