Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net EF5代码优先-创建新表_Asp.net_Database_Entity Framework - Fatal编程技术网

Asp.net EF5代码优先-创建新表

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

我正在使用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 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语句”如果它解决了您的问题,则标记为答案。如果它解决了您的问题,则标记为答案。