Asp.net EF5代码优先-创建新表
我正在使用asp.net mvc3和实体框架5 我的数据库是先用代码设计的 实体代码Asp.net EF5代码优先-创建新表,asp.net,database,entity-framework,Asp.net,Database,Entity Framework,我正在使用asp.net mvc3和实体框架5 我的数据库是先用代码设计的 实体代码 public class User { public int Id { get; set; } public string Name { get; set; } } public class EFDbContext : DbContext { public DbSet<User> Users { get; set; } } public class User
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class EFDbContext : DbContext
{
public DbSet<User> Users { get; set; }
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
}
public class EFDbContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
}
公共类用户
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共类EFDbContext:DbContext
{
公共数据库集用户{get;set;}
}
创建数据库选项
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFDbContext>());
Database.SetInitializer(新的DropCreateDatabaseIfModelChanges());
我使用此选项时,数据库已创建
创建数据库后,我需要一个角色表
所以我不得不修改代码如下
实体代码
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class EFDbContext : DbContext
{
public DbSet<User> Users { get; set; }
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
}
public class EFDbContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
}
公共类用户
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共阶级角色
{
公共int Id{get;set;}
公共字符串名称{get;set;}
}
公共类EFDbContext:DbContext
{
公共数据库集用户{get;set;}
公共数据库集角色{get;set;}
}
我再次使用createdb选项
在这种情况下,将在重新生成后删除现有用户表
我希望被添加到角色表中,但将数据保留在用户表中
我应该怎么做?使用代码优先迁移
Database.SetInitializer(null);
然后在包管理器控制台中写入:
add-migration addedRoles
如果以前未启用迁移,则必须先启用它:
enable-migrations
最后:
update-database
完整guid:
编辑
如果希望在运行应用程序时自动升级数据库,可以使用MigrateDatabaseToLatestVersion
初始值设定项:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<EFDbContext, Configuration>());
Database.SetInitializer(新的MigrateDatabaseToLatestVersion());
使用代码优先迁移
Database.SetInitializer(null);
然后在包管理器控制台中写入:
add-migration addedRoles
如果以前未启用迁移,则必须先启用它:
enable-migrations
最后:
update-database
完整guid:
编辑
如果希望在运行应用程序时自动升级数据库,可以使用MigrateDatabaseToLatestVersion
初始值设定项:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<EFDbContext, Configuration>());
Database.SetInitializer(新的MigrateDatabaseToLatestVersion());
了解迁移是如何工作的
他们还有另一个初始值设定项,
MigrateDatabaseToLatestVersion
。与您使用的版本不同,此版本将自动将您的数据库升级到最新版本,而无需重新创建整个数据库。了解迁移的工作原理
他们还有另一个初始值设定项,
MigrateDatabaseToLatestVersion
。与您使用的版本不同,此版本将自动将您的数据库升级到最新版本,而无需重新创建整个数据库。我认为要从代码(而不是手动)应用迁移,您必须使用MigrateDatabaseToLatestVersion
初始值设定项。谢谢。您提供的迁移成功。但是,我有一些问题。'Update-database-Verbose'我不知道此命令是否要执行某些操作。此命令是什么意思?它是Update database-Verbose
(在'database'后面有一个空格)。它告诉EF:“显示您在我的数据库上执行的SQL语句”我认为要从代码(而不是手动)应用迁移,您必须使用MigrateDatabaseToLatestVersion
初始值设定项。谢谢。您提供的迁移成功。但是,我有一些问题。'Update-database-Verbose'我不知道此命令是否要执行某些操作。此命令是什么意思?它是Update database-Verbose
(在'database'后面有一个空格)。它告诉EF:“显示您在我的数据库上执行的SQL语句”如果它解决了您的问题,则标记为答案。如果它解决了您的问题,则标记为答案。