在 PackageManagerConsole 中添加迁移时,EF Core IEntityTypeConfiguration class 中未命中断点

Breakpoint not hit in EF Core IEntityTypeConfiguration class on add-migration in PackageManagerConsole

我正在一个小型测试项目中做一些发现,并试图在配置定义中设置断点 class。

public class TripExpenseComparisonEntityTypeConfiguration : IEntityTypeConfiguration<TripExpenseComparison>
{
    public void Configure(EntityTypeBuilder<TripExpenseComparison> builder)
    {
        builder.HasKey(u => u.Id)
             .HasName("PK_TravelExpense");

        builder.OwnsOne(vo => vo.BudgetedTripExpense, exp =>
        {
            var x = from p in exp.GetType().GetProperties() where p.PropertyType == typeof(decimal) select p;

            exp.Property(u => u.AllowNegatives)
                .IsRequired();

            exp.Ignore(u => u.TotalExpenses);

        });
       ... rest removed

当我 运行 从包管理器控制台添加迁移时,在 DataAccess 项目中,它 运行 是整个迁移(正确地)除了它没有达到设置的断点之外行

>exp.Property(u => u.AllowNegatives)
        .IsRequired();

断点在这种class中不起作用吗?还是他们在添加迁移事件中没有受到攻击?

您可以在所需位置之前添加此行Debugger.Launch();。它启动并将调试器附加到进程。

请参阅文档 here

您 运行 通过代码和调试使用 DbMigrator 迁移的另一个选项。

如果您的 Startup.cs 中有 Database.Migrate(); 调用,那么断点应该被击中。

如果您这样做了,但仍然没有,请确保您在 DbContext 中应用配置 class。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetAssembly(typeof(MyDbContext)));
}

其中 MyDbContext 是此 class 的名称或与您的 IEntityTypeConfiguration<T> 配置在同一程序集中的 class。