首先,无法在Visual Studio外运行Nuget PowerShell(它使用DTE)。 此外,您在没有Visual Studio的情况下编写的所有内容都需要手动插入到csproj中(但这不是什么难事)。
我会发送给您一些代码行以展示其工作原理。 要测试它们,请创建MyDll dll(一个带有上下文和实体的项目测试),然后手动启用MyDll上的迁移,使用Enable-Migrations(只需创建Configuration.cs)。
之后,您可以使用此代码段生成源代码。
DbConnectionInfo connectionStringInfo = new DbConnectionInfo(
"Server=.;Database=MigrationTest;User=sa;Password=dacambiare", "System.Data.SqlClient");
ToolingFacade toolingFacade = new ToolingFacade(
"MyDll",
"MyDll",
null,
"C:\\Temp\\MigrationTest",
"C:\\Temp\\MigrationTest\\App.config",
"C:\\Temp\\App_Data",
connectionStringInfo)
{
LogInfoDelegate = s => {Console.WriteLine(s);},
LogWarningDelegate = s => { Console.WriteLine("WARNING: " + s); },
LogVerboseDelegate = s => { Console.WriteLine("VERBOSE: " + s); }
};
ScaffoldedMigration scaffoldedMigration = toolingFacade.Scaffold("MyMigName", "C#", "MyAppNameSpace", false);
Console.WriteLine(scaffoldedMigration.DesignerCode);
Console.WriteLine("==================");
Console.WriteLine(scaffoldedMigration.UserCode);
编辑
我忘记了命名空间并且它们并不经常使用,所以在这里为您提供。
using System;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.Migrations.Design;
Add-Migration
命令吗? - RobAdd-Migration
似乎无法从VS shell外部访问。 - LukeHennerley