我在Google上搜索了很多,但是没有找到有关该问题的任何有用信息。
当前,我正在制作一个插件系统,每个插件都是一个.Net Core 2.2 ClassLibrary 项目。
在一个插件中,它将创建一个新的DbContext。为了能够部署到生产环境,我需要创建迁移脚本。但是,如果没有启动项目,我无法调用Add-Migration或Script-Migration。
最后,我们提出了一个仅用于生成脚本的虚拟启动项目。但是,该脚本不包含任何连接信息:
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
CREATE TABLE [__EFMigrationsHistory] (
[MigrationId] nvarchar(150) NOT NULL,
[ProductVersion] nvarchar(32) NOT NULL,
CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
);
END;
GO
CREATE TABLE [Blogs] (
[BlogId] int NOT NULL IDENTITY,
[Url] nvarchar(max) NULL,
CONSTRAINT [PK_Blogs] PRIMARY KEY ([BlogId])
);
-- omit some similar code
CREATE INDEX [IX_Posts_BlogId] ON [Posts] ([BlogId]);
GO
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20190318085448_InitialCreate', N'2.2.3-servicing-35854');
GO
我不明白拥有启动项目的意义。有什么解决方法吗?谢谢。