[英]Entity Framework 6 update-database throws error while unloading appdomain
我们有一个EF6应用程序,当前正在使用自动迁移。 我们的DbMigrationsConfiguration
类是:
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
这一切都已经工作了好几个月了,在上周的某个地方,它开始在播种时引发错误。 我已经浏览了所有变更集(相当一部分),但看不到上下文对象或配置上可能会影响此内容的任何更改。 没有调用外部DLL。
种子将始终运行,但最后它将抛出:
System.CannotUnloadAppDomainException:卸载应用程序域时出错。(来自HRESULT的异常:0x80131015)
在System.AppDomain.Unload(AppDomain域)
在System.Data.Entity.Migrations.Design.ToolingFacade.Dispose(布尔设置)
在System.Data.Entity.Migrations.Design.ToolingFacade.Dispose()
在System.Data.Entity.Migrations.UpdateDatabaseCommand。<> c__DisplayClass2。<。ctor> b__0()
在System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)卸载appdomain时出错。 (来自HRESULT的异常:0x80131015)
如果我从种子中删除对上下文对象的任何使用,它将正常工作。
如果我这样做:
var objs = context.ObjectX.ToList();
它将引发错误。
我尝试使用EF删除所有对EF的引用,删除软件包并重新下载它们,删除数据库,但是它将始终引发错误。
我不确定如何找到造成这种情况的原因。 关于如何处理/修复/跟踪的任何想法/过程/想法都将是很棒的。
(发表我的评论)
令人高兴的是,您可以在https://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/Migrations/Design/ToolingFacade.cs上查看源代码-查找迁移类时,它将它们加载到自己的AppDomain中。 完成后,它将上传appdomain。
异常文档https://msdn.microsoft.com/zh-cn/library/system.cannotunloadappdomainexception%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 ,说有3个导致异常的原因-它必须是第二或第三。 已经卸载(处置两次?)或正在运行的线程。 没有创建线程,所以也许它被处置了两次?
这可能与迁移类型中的静态(或其他)构造函数做了长时间的工作有关吗? 还是他们所依赖的东西。
HRESULT: 0x80131015
对于此类错误表示您在COM
的代码部分中出错了。 从stacktrace中可以看到,在MigrationsDomainCommand.Execute
期间出现了错误。
因此,问题在于您的数据没有在一定时间内正确地发送到服务器,或者MigrationsDomainCommand
没有收到数据库的成功结果。
可能是您的应用程序试图迁移到大量数据之类的? 检查连接和命令的timeout
-默认情况下,它们具有不同的超时。 或者只是尝试使用已处置的命令或集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.