如何在 Migration class, Up 方法中访问 EF 模型注释?
How to access the EF model annotations in Migration class, Up method?
如何在 Migration class、Up 方法中访问 EF 模型注释?
我的意思是那些注释:
modelBuilder.Entity<Role>().HasAnnotation("constraint1", constraint);
在这个方法中:
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// how to access annotations? means get value of Role's "constraint1" annotation
}
}
迁移的构建过程(在其自动化步骤中)可以使用注释(以及其他定义),但是如果您想手动 append/change 迁移代码,则如何访问元数据并不明显。
问题是在迁移过程中没有单个模型,或者更准确地说,迁移代表两个模型之间的转换,其中none可能是当前的。迁移构建过程使用模型快照和差异来生成迁移命令。
最终您可以尝试从 Migration.TargetModel
属性 获取信息。它提供迁移时模型的快照,并由相关迁移 designer.cs
文件中的代码构建。
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// how to access annotations? means get value of Role's "constraint1" annotation
var annotations = TargetModel.FindEntityType("YourModelNamespace.Role"))
.GetAnnotations();
// or
var constraint1 = TargetModel.FindEntityType("YourModelNamespace.Role"))
.FindAnnotation("constraint1");
}
}
如何在 Migration class、Up 方法中访问 EF 模型注释?
我的意思是那些注释:
modelBuilder.Entity<Role>().HasAnnotation("constraint1", constraint);
在这个方法中:
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// how to access annotations? means get value of Role's "constraint1" annotation
}
}
迁移的构建过程(在其自动化步骤中)可以使用注释(以及其他定义),但是如果您想手动 append/change 迁移代码,则如何访问元数据并不明显。
问题是在迁移过程中没有单个模型,或者更准确地说,迁移代表两个模型之间的转换,其中none可能是当前的。迁移构建过程使用模型快照和差异来生成迁移命令。
最终您可以尝试从 Migration.TargetModel
属性 获取信息。它提供迁移时模型的快照,并由相关迁移 designer.cs
文件中的代码构建。
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// how to access annotations? means get value of Role's "constraint1" annotation
var annotations = TargetModel.FindEntityType("YourModelNamespace.Role"))
.GetAnnotations();
// or
var constraint1 = TargetModel.FindEntityType("YourModelNamespace.Role"))
.FindAnnotation("constraint1");
}
}