0

我正在试验最新的 EF 5 CF(在 VS2010 中,而不是在 VS2012 中)。我通常遵循 MSDN EF 5.0 快速入门:使用代码优先创建模型...

我的 DbContext 不是使用控制台应用程序,而是在 Windows 服务中,它最终将通过托管 WCF 服务来公开各种数据服务方法(客户端将是 WPF MVVM)

在 Windows Service 的 OnStart 中,我调用了 SetInitializer,然后做一个简单的查询来触发初始化:

// Start the Windows service.
protected override void OnStart(string[] args)
{          
   Database.SetInitializer<MediaLibraryContext>(new MediaLibraryContextInitializer());
   using (var context = new MediaLibraryContext())
   {
      var firstMedia = (from m in context.Medias select m).FirstOrDefault();
   }
   ...

正如预期的那样,EF CF 从模型中创建数据库并为其播种。

但是当我停止/重新启动服务时,EF 似乎会删除数据库并重新创建它(或者它可能只是删除表并重新创建它们?)。我对数据库所做的所有初始化后更改都消失了,只存在“种子”数据。

我使用过 EF 4.1 和 4.3,但从未见过这种行为。任何想法在哪里看???

爸爸猫

编辑:我在发布此内容后发现了问题......快速启动代码将数据库初始化策略设置为 DropCreateDatabaseAlways。

这就是我在不仔细查看的情况下复制/粘贴代码所得到的!

直流

4

1 回答 1

0

我在发布后发现了问题...快速启动代码将数据库初始化策略设置为 DropCreateDatabaseAlways。

于 2012-08-06T15:03:36.597 回答