Я пытаюсь 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
приложения? Спасибо за ответы!
Развертывание базы данных с помощью файла .dacpac из приложения .Net Core 2.0
Ответы (3)
Планируется .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();
DacFx .NET Core Support #20
все еще Open
- person Dmitry Pavlov; 24.10.2018
post-build event command line
, чтобы база данных создавалась автоматически.
- person taylorswiftfan; 05.04.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
Затем мне нужно узнать, работает ли это ...
Пакет Microsoft.SqlServer.DacFx nuget теперь выпущен для netstandard2.0: https://www.nuget.org/packages/Microsoft.SqlServer.DacFx/
Чтобы опубликовать файл dacpac в SQL Server LocalDB, вы можете использовать:
using Microsoft.SqlServer.Dac;
...
var dacpac = DacPackage.Load(@"path\to.dacpac");
var dacpacService = new DacServices("Server=(localdb)\\mssqllocaldb;Database=TargetDatabase;Trusted_Connection=True;MultipleActiveResultSets=true");
dacpacService.Publish(dacpac, "TargetDatabase", new PublishOptions());