0

我的机器上没有安装 SQL Server。因此,我决定开始使用.sdfVS2010 中的 SQL Server Compact Edition ( )。在那之后,我现在安装了 SQL Server,现在我想将其转换.sdf为“真正的”SQL Server 数据库。

我该怎么做 ?请指教。

4

1 回答 1

1

您应该将connectionString指向 Compact SQL 的指向更改为新的 SQL Server 实例。之后在您的 Context 文件中,在一个名为的静态构造函数中:

static YourDbContext()
{
    Database.SetInitializer(new CreateDatabaseIfNotExists<YourDbContext>());
}

这应该根据您的模型创建您的数据库和表。如果您需要插入任何数据,您应该Enable-Migrations在一个配置文件中使用createdc8 覆盖Seed方法。

一件重要的事情不要假设您拥有 CREATE 或 DROP DATABASE 或执行表修改的权利或特权。

我假设您使用的是 EF Code First 方法。您的上下文文件可能如下所示:

public YourDbContext : DbContext
{
    static YourDbContext()
    {
        // Database.SetInitializer<DbContext>(null); // Change this line to the next one
        Database.SetInitializer(new CreateDatabaseIfNotExists<YourDbContext>());
    }

    // The rest of implementation 
}

在 Visual Studio 内部Package Manager Console执行:

Enable-Migrations -ProjectName YourProjectName

(如果您有多个 DbContext 实现,则需要按照 Enable-Migrations 向您返回的错误消息中的说明进行操作。)

完成此操作后,您会注意到一个Migrations包含一个文件的新文件夹Configuration.cs。打开它,您将看到方法 Seed。

protected override void Seed(YourDbContext context)
{
    //  This method will be called after migrating to the latest version.
     //  You can use the DbSet<T>.AddOrUpdate() helper extension method 
    //  to avoid creating duplicate seed data. E.g.
    //
    //    context.People.AddOrUpdate(
    //      p => p.FullName,
    //      new Person { FullName = "Andrew Peters" },
    //      new Person { FullName = "Brice Lambson" },
    //      new Person { FullName = "Rowan Miller" }
    //    );
    //

    // Here you can call your context.DbSetImplementation.Add(new Something {...});
}

就是这样。

于 2013-04-03T17:30:55.360 回答