Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在自包含的应用程序中运行迁移_C#_Asp.net Core_Self Contained - Fatal编程技术网

C# 在自包含的应用程序中运行迁移

C# 在自包含的应用程序中运行迁移,c#,asp.net-core,self-contained,C#,Asp.net Core,Self Contained,我已使用dotnet创建了一个自包含的应用程序: dotnet publish -c release 部署包包含.net核心运行时本身,因此如果有人想使用应用程序,则不需要单独安装.net核心运行时 但我的问题是。。。是否可以将dotnet.exe附加到部署包 F.e.-我的web应用需要迁移的数据库: dotnet ef database update 无法从自包含的应用程序运行此命令(无法直接访问dotnet.exe) 在这种情况下,情况是什么?我该怎么处理 解决方案是在Startup.

我已使用
dotnet
创建了一个自包含的应用程序:

dotnet publish -c release
部署包包含.net核心运行时本身,因此如果有人想使用应用程序,则不需要单独安装.net核心运行时

但我的问题是。。。是否可以将
dotnet.exe
附加到部署包

F.e.-我的web应用需要迁移的数据库:

dotnet ef database update
无法从自包含的应用程序运行此命令(无法直接访问
dotnet.exe


在这种情况下,情况是什么?我该怎么处理

解决方案是在Startup.cs上添加它,就像这样

public void Configure(
    IApplicationBuilder app,
    // ... various other parameters that you may have and below add the context that you want to run Migrations
    YourDbContext db1)
{
{
    // run the migrations before other code
    db1.Database.Migrate();
    // ...
}

这有点奇怪,但是您将它作为一个额外的参数添加到Configure方法签名中,它就可以工作了(我猜它会自动实例化dbContext对象并调用该方法)。这对我很管用。

看看这篇文章:在启动时只需在代码中调用
context.Database.MigrateAsync()