使用 Visual Studio 数据库项目的 PostDeployment 脚本插入图像

Posted

技术标签:

【中文标题】使用 Visual Studio 数据库项目的 PostDeployment 脚本插入图像【英文标题】:Insert Image with PostDeployment script with Visual Studio Database Project 【发布时间】:2017-04-20 15:09:34 【问题描述】:

我有一个 Visual Studio sql server 数据库项目和一个图像表。我需要在 PostDeployment 脚本中插入默认图像,因为该图像将用于所有具有空图像的实体。如何在项目中存储此图像,以及如何在脚本中访问它?

在数据库项目中插入此图像是一种好习惯吗?我有一个 WindowsService 项目和一个带有实体框架的 ASP.NET MVC 项目。我是否应该在其他 2 个项目中的每一个中将这张图片插入到某种初始验证中?

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点。

给定一张桌子

create table testImage
(id int,
myImage varbinary( max));

您可以从文件中插入图像,例如:

INSERT INTO testImage (id, myImage)
SELECT 1, bulkcolumn
FROM openrowset(BULK 'D:\x\dZLx1.png', single_blob) as myImage

这里有几个潜在的麻烦,您需要以某种方式跟踪项目中图像的路径,我认为有一些与安全相关的场景OPENROWSET 无论如何都不起作用。

在您的桌面上执行一次可能更可靠,然后SELECT 再次输出值以在插入语句中使用,例如

IF NOT EXISTS (SELECT * FROM testIMAGE where ID = 2)
BEGIN
INSERT INTO testImage VALUES
(2,0x89504E470D0A1A0.....)
END

(此处为完整脚本:https://gist.github.com/gavincampbell/a25431dffd3555563a052c297a32415e)

当你尝试这个时你会意识到,结果字符串将是long。我认为将其保存在单独的脚本中并使用 :r 从主要的部署后脚本中引用它是一个好主意(如果您已经知道这一点,请道歉!)。还要记住,二进制“字符串”不需要引号。

【讨论】:

以上是关于使用 Visual Studio 数据库项目的 PostDeployment 脚本插入图像的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio:调试时重置用户设置

Visual Studio 2015 没有将 TypeScript 编译为 ASP.NET Core 项目的一部分?

在 Visual Studio 2010 上将静态库链接到我的项目

使用 Visual Studio 数据库项目的 PostDeployment 脚本插入图像

是否可以使用 VS2008 开发版打开 Visual Studio 2008 数据库项目?

如何使用 Visual Studio 数据库项目重命名列?