在WPF中是否有“如果模型更改则重新创建数据库”功能?

28
我正在尝试使用Entity Framework Code First。在WPF 4.0中,我似乎找不到用于RecreateDatabaseIfModelChanges的程序集/命名空间。这是仅适用于ASP.NET的功能吗?如果不是,应该引用哪个程序集? 这是我的代码:
using System;
using System.Data.Entity;
using System.Windows;
using CodeFirstTester.Models;

namespace CodeFirstTester
{
    public partial class App : Application
    {
        static App()
        {
            // this fails:
            Database.SetInitializer(new RecreateDatabaseIfModelChanges<NerdDinners>());

            // The type or namespace name 'RecreateDatabaseIfModelChanges'
            // could not be found (are you missing a using directive or
            // an assembly reference?)                

            using (var nerdDinners = new NerdDinners())
            {
                var dinner = new Dinner()
                {
                    Title = "Party at Scott's House",
                    EventDate = DateTime.Parse("12/31/2010"),
                    Address = "Building 40",
                    HostedBy = "scottgu@microsoft.com"
                };
                nerdDinners.Dinners.Add(dinner);
                nerdDinners.SaveChanges();
            }
        }
    }
}

我找不到任何关于该类的MSDN文档。你确定它已经发布了吗? - Daniel Hilgarth
2
我发现了这个链接:http://www.scottleckie.com/2011/03/rc-of-entity-framework-4-1-including-ef-code-first-is-released/。它说这种策略现在被称为“DropCreateDatabaseIfModelChanges”,但我在MSDN上也没有找到任何相关信息...很奇怪。 - Daniel Hilgarth
1
@Daniel Hilgarth:文档在这里:http://msdn.microsoft.com/en-us/library/gg696142%28v=VS.103%29.aspx 还列出了三个可用的IDatabaseInitializer实现,包括DropCreateDatabaseIfModelChanges - Slauma
1个回答

52

初始化程序称为DropCreateDatabaseIfModelChanges。它可以在 EntityFramework.dll (EF 4.1) 的System.Data.Entity 命名空间中找到。


3
谢谢Ladislav!我想当他们从CTP转到RC时,他们改变了该策略的名称。 - devuxer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接