如何调试dotnet ef数据库丢弃?

正在运行dotnet ef database drop我收到一条错误消息。我怎样才能调试这个命令,获得更多关于这个问题的细节?或者我怎么能找到这个错误的来源?如何调试dotnet ef数据库丢弃?

System.ObjectDisposedException:无法访问处置的对象。造成这种错误的一个常见原因是处理从依赖注入解决的上下文,然后尝试在应用程序的其他地方使用相同的上下文实例。如果您在上下文中调用Dispose(),或者在使用语句中包装上下文,则可能会发生这种情况。如果您正在使用依赖注入,则应该让依赖注入容器负责处理上下文实例。 对象名称:“ApplicationDbContext”。 贝Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() 贝Microsoft.EntityFrameworkCore.DbContext.Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure.get_Instance() 贝Microsoft.EntityFrameworkCore.Infrastructure.AccessorExtensions.GetService [TService](IInfrastructure 1 accessor) bei Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func 1厂) 贝Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(字符串contextType) 贝Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.DropDatabase(字符串contextType) 贝Microsoft.EntityFrameworkCore.Design.OperationExecutor.DropDatabaseImpl(字符串contextType) bei Microsoft.EntityFrameworkCore.Design.OperationExecutor.DropDatabase。 <> c__DisplayClass0_1。 < .ctor> b__0() bei Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) 无法访问处置的对象。造成这种错误的一个常见原因是处理从依赖注入解决的上下文,然后尝试在应用程序的其他地方使用相同的上下文实例。如果您在上下文中调用Dispose(),或者在使用语句中包装上下文,则可能会发生这种情况。如果您正在使用依赖注入,则应该让依赖注入容器负责处理上下文实例。 对象名称:“ApplicationDbContext”。

回答:

我有同样的问题,并已将此添加到的DbContext:

private void PrintStackTrace() 

{

var st = new StackTrace();

foreach (var sf in st.GetFrames())

Console.WriteLine($"{sf.GetMethod().DeclaringType.Assembly.GetName().Name} {sf.GetMethod().DeclaringType.Name} {sf.GetMethod().Name}");

}

,并在构造和的DbContext处置调用这个函数。

这似乎是一个问题,如果将DbContext添加到依赖注入的作用域生命周期中。我为此提出了一个问题。

https://github.com/aspnet/EntityFrameworkCore/issues/10693

回答:

添加代码在你的DbContext构造函数等待一个调试器,你就可以调试:

public class ApplicationDbContext: DbContext 

{

public ApplicationDbContext()

{

while (!Debugger.IsAttached)

{

Thread.Sleep(100);

}

}

...

}

然后用你喜欢的调试器附加DOTNET过程。

以上是 如何调试dotnet ef数据库丢弃? 的全部内容, 来源链接: utcz.com/qa/265965.html

回到顶部