MVC C#在不删除数据库的情况下更改数据库结构
本文关键字:数据库 情况下 结构 MVC 删除 | 更新日期: 2024-10-20 02:55:43
如果我将一个属性添加到一个类或将整个类添加到数据库文件中的DbSet
,Entity Framework应该相应地自动添加表列。这工作得很好,但我的问题是删除整个数据库并重新创建它
我使用的远程服务器不允许我通过Visual Studio重新创建数据库,如果我添加/更改类/属性,我必须手动创建一个全新的数据库。此外,它不会让我删除对数据库的引用,即使它在技术上已经被删除,所以我必须将新数据库重命名为另一个名称。
有没有什么方法可以让我在不删除和重新创建数据库的情况下轻松地更改数据库的结构?
是的,有一种方法。使用实体框架迁移。从包管理器控制台执行开始:
Enable-Migrations
MSDN上有一篇关于迁移的文章。只有在使用实体框架代码优先的方法时,才可以选择使用迁移。
EF迁移最酷的地方在于,您可以启用自动迁移选项。基本上,所有不会影响数据库中数据完整性或丢失(例如添加列或新表)的架构更改都可以自动推送,而无需显式实现迁移。
要求
将实体框架安装到Visual Studio应用程序
步骤
-
导入CodeFirst模型(你似乎已经有了你的模型,只要确保它是一个代码优先的模型。)
-
在VS中使用包管理器控制台并运行:
Add-Migration -IgnoreChanges
-
在您的模型对象上,进行任何所需的更改
-
在没有-IgnoreChanges标志的情况下恢复"添加迁移"命令
Add-Migration
-
更新数据库
Update-Database
备注
您可以添加选项和C#文件来控制您的迁移
Update-Database -ProjectName Model -StartUpProjectName Model -Verbose
-ConfigurationTypeName SpecialConfigurationForThisMigration
此迁移的特殊配置。cs
internal sealed class Configuration : DbMigrationsConfiguration<Model.Model>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Customer''Migrations";
}
protected override void Seed(Model.Model 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.
}
}