2014-02-09 48 views
0

在我的项目中,我使用实体框架6和代码优先的方法。我的目标是用所有必需的初始数据初始化数据库。基于我所做的研究,我决定实施IDatabaseInitializer。然而,有些我不明白,我很乐意得到一些解释。EF代码优先:初始化DB的正确方法是什么?

我想使用“dropcreatedatabaseifmodelchanges”策略。但是,一个初始化程序可以针对单个上下文进行工作。在我的项目中,我有几个上下文。所以,我决定创建几个初始化器,每个上下文一个。

但有一个问题:第一个初始化程序加载,删除数据库并添加其数据。之后,第二个初始化程序加载并删除数据库(以及来自前一个初始化程序的数据)......因此,我以仅加载最后一个初始化程序数据的DB结束。

显然,我的做法是错误的。在有多个数据库上下文的情况下,初始化数据库的正确方法是什么?

感谢

+0

我可以理解,对于单个数据库有几种模型,但仅基于这些模型中的一种重新创建数据库就变得根本不可能。要么使用单一的统一模型,要么不让EF为你创建数据库,我不认为还有其他选择。 – hvd

回答

0

我想你需要建立一个包含所有实体集所有上下文的一个上下文,从上下文初始化数据库。然后你可以创建和使用更小的上下文。