问题标签 [dbmigrator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
10064 浏览

c# - Code first DbMigrator causes error when building from different machines

We have a project under SCM. When I build it from my machine and publish to a remote server via msdeploy, everything works fine.

When my colleague tries the same thing with the same project, freshly pulled from SCM, on the remote server entity framework 4.3.1 DbMigrator throws:

Automatic migration was not applied because it would result in data loss.

As it turns out, it seems that the person who makes the initial publish to the remote server is the "winner". If we drop the database on the remote server, then my colleaugue can publish and I get locked out. My publications result in the same error above.

The config for DbMigrator looks something like this:

I assume this has something to do with the new table __MigrationHistory and the nasty looking long hex string stored in its rows.

I don't want to take full responsibilty for publishing to live. What can I look out for?

0 投票
1 回答
1892 浏览

asp.net-mvc-3 - MVC3 代码优先:迁移和生成数据库

我有点迷失如何让实体框架与自动迁移一起工作。我想:

  • 数据库不存在时自动创建
  • 模型更改时要自动更新的数据库

对于后者,我使用的是 DbMigrator。它相当慢,所以我不想在每个请求都运行它,而且我在同一个应用程序中有多个数据库,所以它不能进入​​ Application_Start 这就是为什么我把它放在 Session_Start 中,如下所示:

不确定这是否是正确的方法,但它似乎有效,但是当它不存在时它实际上并没有生成数据库。它给了我一个“无法打开登录请求的数据库”db“”

我以前使用以下方法进行过此工作:

这会删除数据库并生成种子数据,这在数据库不存在时很好,但它也可以在数据库更改时触发(在这种情况下,我希望 DbMigrator 处理它)这之前在 Application_Start 但我不确定怎么办。恐怕会和 DbMigrator 冲突。为了实现前面描述的两件事,我将如何设置这一切?

0 投票
3 回答
3405 浏览

c# - DbMigrator.GetPendingMigrations() 始终为空

我正在使用DbMigrator该类来获取待处理迁移的列表。出于某种原因,即使有待处理的迁移,它也不会返回任何项目。我错过了一步吗?

我认为它可能是连接字符串,但有趣的是它migrator.GetDatabaseMigrations()返回已应用于数据库的正确迁移列表。

0 投票
1 回答
413 浏览

entity-framework-4 - 可以使用 EF DbMigrator 添加迁移

是否可以在代码中使用 DbMigrator 而不是通过 powershell 命令添加迁移文件?

0 投票
1 回答
528 浏览

entity-framework - 如何在没有硬编码 nameOrConnectionString 的情况下使用 EF CodeFirst 迁移

如果不在所需的无参数构造函数的基础上硬编码名称或连接字符串,如何使 EF 迁移工作?

EF 迁移迫使您将默认构造函数添加到自定义 dbcontext。在 dbcontext 的基础上,您必须提供名称或连接字符串。

我们需要对构造函数进行硬编码这一事实是我们无法使用的,因为在我们的客户端应用程序中,我们在没有配置文件的情况下工作,并且我们动态建立连接,因为我们连接到许多不同的数据库(服务器、本地 sql compact)。

在探索了 DbMigrationsConfiguration 类之后,我发现了一个名为 TargetDatabase 的 DbConnectionsInfo 属性,可以在构造函数中进行设置。但即使这个解决方案也不起作用。这就是我所做的:

我可以看到最终在 DbMigrator 中使用了 Activator.CreateInstance,并且我希望从这个类中使用 TargetDatabase.Create...或其他东西。

欢迎任何帮助或反馈。

提前致谢,

威尔科

0 投票
1 回答
2978 浏览

c# - 手动向 DbMigrator 提供 DbContext

平台 .NET 4.5 和实体框架 6。

问题 我有以下代码来执行迁移:

问题是 Update() 函数试图创建我的 DbContext 类的实例,出于一些充分的原因,我需要手动创建上下文并将其提供给 dbMigrator。那可能吗?如何?

0 投票
2 回答
389 浏览

c# - Entity Framework/dbMigration - 不需要的十进制舍入

我正在开发一个新的代码优先实体框架(使用 dbMigration)解决方案,但我遇到了一些我无法克服的障碍。

即使我修改了生成的迁移文件以将十进制字段的精度/小数位数设置为 18 和 9,但当我运行 update-database 来构建数据库并调用我编写的方法来播种数据时,它会将数据四舍五入为2 位小数,而不是我预期的 9 位。在我尝试播种的示例数据中,我尝试将 Price 属性设置为 0.4277,但它在数据库中显示为 0.420000000

我一直在寻找解决这个问题的方法,包括为 OnModelCreating 创建一个覆盖(在我的上下文类中),以强制那里的精度/比例。但是当我把它准备好时(参见下面代码中注释掉的行),虽然数据库迁移仍然完全按计划工作(包括按预期创建 DECIMAL(18,9)),但现在 Seed 调用不运行.

我希望我只是缺少一些小东西(而且很容易修复)。但是任何人都可以提供我可以尝试的建议吗?

下面是相关代码(包括最初生成的迁移代码):

我错过了什么?

谢谢!

0 投票
0 回答
42 浏览

entity-framework-6 - 向 DbMigrator 提供上下文

DbMigrator 的工作原理

我有实例化一个新的代码DbMigrator(new Configuration())

Configuration是 的自定义扩展DbMigrationsConfiguration<T>,其中 T 是DbContext

所以在 内Configuration,有一个 ContextType,它等于<T>

实例化 DbMigrator 时,它会尝试创建<T>DbContext 的实例。它将尝试在<T>Context 上使用 Empty Constructor,或者它会尝试查找IDbContextFactory<...>where...的实际类型是哪里的实现,而不是泛型 T。

DbMigrator 如何不起作用

问题是,程序集实例化DbMigrator无法访问IDbContextFactory<...>它需要发现的特定类型。另外,我DbContext没有默认构造函数,我不希望它。所以我收到异常The target context '...' is not constructible.

困扰我的是,在我实例化的时候DbMigrator,我已经有一个我正在迁移的实例(或者可能已经一个实例中) 。DbContext此外,我可以访问IDbContextFactory<T>DbMigrator 内部无法发现的泛型,但我很乐意为它提供一个实例。

问题

那么如何告诉 DbMigrator 要么只使用我的 Context 实例,要么使用我指定的 IDbContextFactory 实例?当它在幕后依靠其神奇的 juju 来尝试发现这些东西(可能使用反射/ServiceLocation)时,它失败了。

我的情况

在一个 AppDomain 中,我使用的是nContexts。我想说一个,但通常是两个,而且可能不止于此。因此,任何依赖于单个应用程序/Web 配置属性或指向单个DbConfiguration 或 ConnectionFactory 的属性装饰器的解决方案都不适合我。因为每个 AppDomain 只能有一个,除非我可以根据我当时需要的上下文来配置它,否则它是徒劳的。所以那里有回旋的余地,但我不知道。

base此外,对于与构造函数相关的 EF,可能有一些我不了解的 juju 。但我不相信将 a 传递给DbConnection构造函数而不是 anameOrConnectionString会起作用。它仍然不是一个空的构造函数。但是,如果 EF 用它来搜索构造函数,以及如何使用它,那可能会起作用。

0 投票
1 回答
34 浏览

spring-boot - 如何在 SpringBootApplication 中的 MyBatis 映射之前启动 Liquibase 迁移?

如何在 SpringBootApplication 中的 MyBatis 映射之前启动 Liquibase 迁移?

这是官方的方式吗?我试过 DependsOn 它不起作用,暴露了循环依赖

0 投票
0 回答
57 浏览

postgresql - C++的分布式事务管理器

目前我们基于 c++ 的应用程序使用 ibm DB2 和 IBM MQ。IBM MQ 充当 xa 事务管理器。我们正在将数据库迁移到 Postgresql。但是,我们无法让 Postgresql 参与其中 IBM MQ 是事务管理器的 xa 事务。IBM MQ 作为事务管理器似乎只支持 IBM DB2 和 Oracle 作为资源。不支持 Postgresql。我们如何让 IBM MQ 和 Postgresql 一起参与 xa 事务?我们的应用程序托管在 Red Hat Linux 上。