【发布时间】:2015-01-07 00:27:54
【问题描述】:
我正在尝试使用 EntityFramework v6 nuget 包中提供的 migrate.exe 设置自动迁移。我的应用程序使用 PostgreSQL 数据库并使用自定义数据库提供程序 (Npgsql),这需要对 EntityFramework 进行额外配置。
如果我将所需的配置添加到 machine.config 中,Migrate.exe 会成功运行,但这不是一个实用的解决方案,因为它需要在运行迁移的任何地方编辑 machine.config。我还想将此设置为 AppVeyor 构建过程的一部分,我认为无法编辑 AppVeyor 构建服务器的 machine.config。
作为编辑 machine.config 的替代方法,我尝试在 migrate.exe 旁边创建一个包含所需配置的 migrate.exe.config 文件,但这不起作用并导致以下错误。
错误:具有不变名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。
是否有另一种方法可以在不使用 machine.config 的情况下为 migrate.exe 配置自定义提供程序?
作为参考,需要的额外配置是
<system.data>
<DbProviderFactories>
<remove invariant="Npgsql" />
<add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, Npgsql" />
<providers>
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
</providers>
</entityFramework>
【问题讨论】:
标签: .net entity-framework-6 npgsql