EntityFramework (6.1.3) 的 nuguet 包安装了一些您可以从 nuget 包管理器控制台执行的工具(如AddMigration、Update-Database等)。如果您使用 nuget 并且加载了适当的 .ps 文件,则这些都是可用的。
我正在使用paket而不是 nuget解决我的项目和解决方案依赖项,因此这些命令对我不可用。
是否有任何替代方法可以执行这些脚本而无需返回 nuget?
EntityFramework (6.1.3) 的 nuguet 包安装了一些您可以从 nuget 包管理器控制台执行的工具(如AddMigration、Update-Database等)。如果您使用 nuget 并且加载了适当的 .ps 文件,则这些都是可用的。
我正在使用paket而不是 nuget解决我的项目和解决方案依赖项,因此这些命令对我不可用。
是否有任何替代方法可以执行这些脚本而无需返回 nuget?
正如@ErikEJ 提到的,您可以从命令行使用 migrate.exe 。不幸的是(来自文档):
该实用程序旨在执行的所有操作都是执行迁移。它无法生成迁移或创建 SQL 脚本。
因此,您可以运行任何现有的迁移,但不能使用此工具创建任何新的迁移。这使得 migrate.exe 无法替代 EF 在包管理器资源管理器中提供的工具。
我尝试在包管理器控制台中手动导入 EntityFramework.psd1 文件:
PM> Import-Module ".\packages\EntityFramework\tools\EntityFramework.psd1"
虽然这使 Enable-Migrations 命令可用,但运行它会产生以下错误:
未安装任何软件包。
EntityFramework 包未安装在项目“Foo”上。
我猜这一切都将与 EF7 一起工作得更好。但就目前而言,看起来我要么必须完全放弃 paket,要么拥有 Paket 和 Nuget 的科学怪人才能使其正常工作。
是的,您从命令行运行 migrate.exe,它包含在工具文件夹中的 NuGet 包中。
从 Paket 问题实体框架代码优先迁移:
在我在 paket.dependencies 中添加 version_in_path: true 之前,EF 命令不会出现在 VS 控制台中:
nuget EntityFramework ~> 6.2 version_in_path: true