2012-07-09 17 views
0

我測試我們的應用程序中使用的SQL Server Compact 4.0數據庫。應用程序使用數據庫(如果它存在),或者在實體框架4.3遷移不存在時使用它進行構建。未找到文件錯誤手動刪除一個的SQL Server Compact 4.0文件時,同時使用實體框架4.3遷移

然而,當我刪除文件時,程序處於空閒狀態,然後執行,這將導致數據庫的讀取動作,我得到一個File not found錯誤。這並不是一個真實世界的場景,但我想知道發生了什麼。

似乎在某處的框架是跟蹤的事實,那已是上是否要創建所需的數據庫檢查的背景。如果確實如此,我不確定我是否喜歡這種情況。

那麼,爲什麼當它第一次訪問,但不能創建數據庫,而程序運行重現? (我知道這會有很多很好的理由,但我想知道實現的位置)。

回答

1

因爲數據庫的建立是EF初始化的一部分 - 初始化通常每當上下文來首次恢復或保持數據的每個上下文類型只發生一次。當您的應用程序運行時刪除數據庫不是EF使用案例,所以如果您想要支持這種情況,您必須自己處理。你可以嘗試使用dbContext.Database.Initialize(true);因爲初始化是非常昂貴的操作,並在您的應用程序沒有線程請勿將沒有真正的需要運行此操作重新初始化EF。可以在初始化運行時訪問數據庫。