3

我正在尝试使用 Effort 来测试我的应用程序,但是如果在上下文中启用了代码优先迁移,那么它会引发以下异常:

System.InvalidOperationException:为上下文“XDbContext”启用了迁移,但数据库不存在或不包含映射表。使用迁移来创建数据库及其表,例如通过从包管理器控制台运行“更新数据库”命令。

如果我禁用迁移,那么一切正常。

我如何阻止实体甚至出于测试目的考虑迁移。

4

2 回答 2

6

我在单元测试项目中不断遇到同样的错误。我通过调用 CreateIfNotExist() 函数来修改 TestInitialize 函数来解决它

    [TestInitialize]
    public void Initialize()
    {
        DbConnection connection = Effort.DbConnectionFactory.CreateTransient();

        context = new MyAccessContext(connection);
        context.Database.CreateIfNotExists();
        service = new YourClass(context);
    }
于 2016-02-29T15:34:10.510 回答
1

几种方法。您可以将数据库初始化程序设置为 null:

Database.SetInitializer<DatabaseContext>(null);

您可以在 web.config 中禁用初始化程序:https ://msdn.microsoft.com/en-us/data/jj556606.aspx?f=255&MSPPError=-2147217396#Initializers

如果您的模型已经是最新的,只需确保您禁用了自动迁移:

AutomaticMigrationsEnabled = false;
于 2016-01-10T04:31:18.493 回答