我的机器上没有安装 SQL Server。因此,我决定开始使用.sdf
VS2010 中的 SQL Server Compact Edition ( )。在那之后,我现在安装了 SQL Server,现在我想将其转换.sdf
为“真正的”SQL Server 数据库。
我该怎么做 ?请指教。
我的机器上没有安装 SQL Server。因此,我决定开始使用.sdf
VS2010 中的 SQL Server Compact Edition ( )。在那之后,我现在安装了 SQL Server,现在我想将其转换.sdf
为“真正的”SQL Server 数据库。
我该怎么做 ?请指教。
您应该将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 {...});
}
就是这样。