我厌倦了使用/运行Add-Migration
和Update-Database
因为很多时候我们忘记在生产数据库上运行迁移。因此,我们决定删除数据库表中的所有迁移以及所有迁移类。那么,如果我的__MigrationHistory表始终为空并且没有迁移类,该怎么办?主要缺点是什么?缺点 - 使用EF 6.x.x代码首先没有迁移
4
A
回答
3
不,这是一个坏主意,[__MigrationHistory]用于比较您当前使用的概念模型和存储模型。
1)案例:DbMigrationsConfiguration自动:
[__MigrationHistory]跟踪最后迁移。
this.AutomaticMigrationsEnabled = true;
this.AutomaticMigrationDataLossAllowed = true;
如上图所示
,所述migrationId是迁移标识符和型号列是当前的概念模型的二进制流的一个base64表示。
2)情况:DbMigrationsConfiguration非自动:
[__MigrationHistory]保持跟踪每迁移。
this.AutomaticMigrationsEnabled = false;
this.AutomaticMigrationDataLossAllowed = false;
每个迁移级别获取用于迁移级别up/level/down的migrationId标识符。
最佳实践:如果要使用自动迁移,只需重新生成迁移并发送给custmer。
如果您正在使用非自动迁移。 1)如果客户需要数据,那么只需将数据转换为新的数据库模式 2)如果客户不需要数据,则只需删除数据库并使用initialCreate再次创建数据库。
如果你想不带任何migrationHistory信息来创建数据库:
// Create the database. You can generate it from SMO "Script database as" and if the database exist then just ignore the creation
// Do not forget to remove the [__MigrationHistory] rows.
DbContext.Database.ExecuteSqlCommand("SQLCreateDbScript.sql");
Database.SetInitializer<MyDbContext>(null);
using (var dbContext = new MyDbContext())
{
// Create DbContext and it works!
dbContext.Users.Add(new User());
dbContext.SaveChanges();
}
我希望这会帮助你解决问题!
如果你想用Db-Schema更少的东西,那么在EF中使用NoSql。 核心版本还没有完成,但与旧版本EF6有可能待办事项是(的NoSql DB)与:http://www.brightstardb.com或Microsoft https://msdn.microsoft.com/en-us/library/dn271399.aspx
相关问题
- 1. EF 6代码优先迁移跳过
- 2. EF代码首先迁移替代ASP.NET核心应用程序
- 3. C#EF核心迁移代码首先无效的列
- 4. 实体框架代码首先迁移和数据迁移
- 5. 添加迁移在代码迁移/代码中首先创建空迁移
- 6. 异常在EF使用代码首先
- 7. 让EF4.3代码首先迁移忽略挂起的迁移
- 8. 从EF自动迁移到代码优先迁移
- 9. EF6:使用代码首先迁移重命名命名空间
- 10. EF 4.2代码首先,使用现有的数据库?
- 11. 试用EF代码优先和迁移 - 绊脚石
- 12. 是否有条件EF迁移代码?
- 13. EF 6代码首先从数据库模型生成错误
- 14. 首先使用EF 4代码重构代码/数据库模式 - 数据迁移
- 15. Asp.net核+ EF代码首先,迁移文件在不同的项目
- 16. 实体框架中的不同dll代码首先迁移
- 17. EF 6代码优先错误:EntityType没有定义密钥
- 18. 首先插入多行的EF代码
- 19. Ef中的代码首先映射
- 20. EF5代码首先迁移 - 创建数据库和迁移错误
- 21. EF代码首先不产生表
- 22. 如何在EF Core代码首次迁移中进行数据迁移?
- 23. 代码首先迁移创建另外的属性
- 24. EF代码首先一对多
- 25. 首先在EF代码中枚举
- 26. 一个在EF代码首先
- 27. EF代码首先到SQL Server的Mysql
- 28. 组合键在EF 4.2代码首先
- 29. SQL Server CE代码首先迁移问题
- 30. 代码首先迁移不应该存在的外键
来使用多语种appoarch上我只是不想要像很多其他的ORM的任何迁移。我们的经理讨厌'Db Schema Change Error'。我知道这是一个坏主意,但我根本不想移民。它使我们哭泣。我们现在不能。我们的第二个opton完全放弃了这个EF。 – user960567