[英]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.