我正在尝试设置测试环境中使用的初始化程序。从我读到的所有内容中, DropCreateDatabaseIfModelChanges 正是我所需要的。通常情况下,数据库与模型稍微不同步,我需要简单地重新开始。
所以这就是我如何设置我的上下文构造函数
var User = sequelize.define("User", {
// model definition skipped
}, {
freezeTableName: true,
timestamps: false
});
但是,即使设置了此初始化程序,我仍然会收到错误:
"支持" ApplicationContext"自数据库创建以来已更改。考虑使用代码优先迁移进行更新 数据库"
其他一些注意事项:
public ApplicationContext(int dbID, string username) : base(dbID, username)
{
Database.SetInitializer<ApplicationContext>(new DropCreateDatabaseIfModelChanges<ApplicationContext>());
Database.Initialize(true);
}
和AutomicMigrationsEnabled = false
。有人遇到同样的问题或有任何想法吗?
更新 我能够在这里查看System.Data.entity的源代码: https://github.com/hallco978/entityframework/tree/master/src/EntityFramework
事实证明我需要彻底删除我的Migrations / Configuration.cs文件以防止错误。该配置文件中的设置并不重要。
我知道遇到问题,因为如果我使用它,我就无法删除数据库。有没有人知道DeleteDatabase是否实际上意味着删除整个数据库或只删除模型创建的表?