Развертывание базы данных с использованием файла .dacpac из приложения .Net Core 2.0 - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь migrate мое приложение от net 4.6.1 до netcore2.0, и возникли некоторые проблемы с Microsoft.SqlServer.Dac.Я развертываю базу данных из файла .dacpac, используя DacServices (Microsoft.SqlServer.Dac 1.0.1), но этот package supports только net 4.6.1. Как я могу развернуть файл .dacpac из приложения netcore?Спасибо за ответы!

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Хорошие новости от 15 ноября 2018 года:

... пакет предварительного просмотра, поддерживающий netcoreapp2.1 и net46: https://www.nuget.org/packages/Microsoft.SqlServer.DACFx/150.4240.1-preview

Имейте в виду, что этопакет nuget Microsoft.SqlServer.DacFx, а не пакеты Microsoft.SqlServer.DacFx.x86 или Microsoft.SqlServer.DacFx.x64, и вам нужно включить режим предварительного выпуска в nuget.

Обсуждается в той же теме:

https://github.com/Microsoft/DACExtensions/issues/20#issuecomment-439222493

Далее мне нужно выяснить, работает ли оно ...

0 голосов
/ 16 мая 2018

Планируется .NET Core поддержка DacFx, но пока нет, и вы не можете сделать это таким образом в .NET Core. Теперь, если добавить NuGet пакет Microsoft.SqlServer.DacFx.x64, восстановление выведет вас:

Пакет 'Microsoft.SqlServer.DacFx.x64 140.3881.1' был восстановлен с помощью '.NETFramework, Version = v4.6.1' вместо целевой структуры проекта ».NETCoreApp, Version = v2.0'

Некоторое время вы можете использовать утилиту командной строки SqlPackage.exe

SqlPackage.exe 
  /Action:Publish 
  /SourceFile:C:/file.dacpac 
  /TargetConnectionString:[Connection string]

И вы можете запустить его программно:

var process = new System.Diagnostics.Process();
var startInfo = new System.Diagnostics.ProcessStartInfo
{
    WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
    FileName = @"C:\Program Files (x86)\Microsoft SQL Server\<Version>\DAC\bin\SqlPackage.exe",
    Arguments = "/Action:Publish /SourceFile:C:/file.dacpac /TargetConnectionString:[Connection string]"
};
process.StartInfo = startInfo;
process.Start();
...