EF代码优先:初始化DB的正确方法是什么?

时间:2014-02-09 19:41:04

标签: entity-framework

在我的项目中,我使用了Entity Framework 6和Code First方法。我的目标是使用所有必需的初始数据初始化数据库。根据我的研究,我决定实现IDatabaseInitializer。但是,有些事我无法理解,我很乐意得到一些解释。

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

但是存在一个问题:第一个初始化器加载,丢弃DB并添加其数据。之后,第二个初始化程序加载并删除DB(以及来自先前初始化程序的数据)......所以,我结束时DB只加载了来自上一个初始化程序的数据。

显然,我的做法是错误的。如果有多个DB上下文,初始化DB的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

我认为你需要创建一个上下文,它包含所有上下文的所有实体集,并从该上下文初始化数据库。然后,您可以创建和使用较小的上下文。