Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何访问迁移类Up方法中的EF模型注释?_.net_Entity Framework_Annotations_Entity Framework Core_Entity Framework Migrations - Fatal编程技术网

.net 如何访问迁移类Up方法中的EF模型注释?

.net 如何访问迁移类Up方法中的EF模型注释?,.net,entity-framework,annotations,entity-framework-core,entity-framework-migrations,.net,Entity Framework,Annotations,Entity Framework Core,Entity Framework Migrations,如何访问迁移类Up方法中的EF模型注释 我指的是那些注释: modelBuilder.Entity<Role>().HasAnnotation("constraint1", constraint); 迁移的构建过程(在其自动化步骤上)可以使用注释(以及其他定义),但如果您想手动附加/更改迁移代码,则不清楚如何访问元数据。问题在于迁移过程中没有单一模型,或者更准确地说,迁移表示两个模型之间的转换,它们都不可能是当前的。迁移构建过程使用模型快照和差异来生成迁移命令 最终,你可以尝试从酒

如何访问迁移类Up方法中的EF模型注释

我指的是那些注释:

modelBuilder.Entity<Role>().HasAnnotation("constraint1", constraint);

迁移的构建过程(在其自动化步骤上)可以使用注释(以及其他定义),但如果您想手动附加/更改迁移代码,则不清楚如何访问元数据。

问题在于迁移过程中没有单一模型,或者更准确地说,迁移表示两个模型之间的转换,它们都不可能是当前的。迁移构建过程使用模型快照和差异来生成迁移命令

最终,你可以尝试从酒店获取信息。它在迁移时提供模型的快照,并由相关迁移
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");
    }
}

“访问EF模型注释”是什么意思?在迁移代码中需要它们做什么?感觉有点模糊。访问意味着获取价值。我会用它们做什么-在迁移中使用(例如创建约束)。如果我错了,请纠正我(没有多少ef core+迁移的实际操作经验),但迁移代码不应该是注释的结果吗?迁移首先是迁移构建过程的结果(它可以自动化,而不是手动附加/编辑)。迁移的构建过程(它的自动化步骤)可以使用注释(以及其他定义)。所以
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");
    }
}