2014-02-09 90 views
0

在我的項目中,我使用實體框架6和代碼優先的方法。我的目標是用所有必需的初始數據初始化數據庫。基於我所做的研究,我決定實施IDatabaseInitializer。然而,有些我不明白,我很樂意得到一些解釋。EF代碼優先:初始化DB的正確方法是什麼?

我想使用「dropcreatedatabaseifmodelchanges」策略。但是,一個初始化程序可以針對單個上下文進行工作。在我的項目中,我有幾個上下文。所以,我決定創建幾個初始化器,每個上下文一個。

但有一個問題:第一個初始化程序加載,刪除數據庫並添加其數據。之後,第二個初始化程序加載並刪除數據庫(以及來自前一個初始化程序的數據)......因此,我以僅加載最後一個初始化程序數據的DB結束。

顯然,我的做法是錯誤的。在有多個數據庫上下文的情況下,初始化數據庫的正確方法是什麼?

感謝

+0

我可以理解,對於單個數據庫有幾種模型,但僅基於這些模型中的一種重新創建數據庫就變得根本不可能。要麼使用單一的統一模型,要麼不讓EF爲你創建數據庫,我不認爲還有其他選擇。 – hvd

回答

0

我想你需要建立一個包含所有實體集所有上下文的一個上下文,從上下文初始化數據庫。然後你可以創建和使用更小的上下文。