使用 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 2015 没有将 TypeScript 编译为 ASP.NET Core 项目的一部分?
在 Visual Studio 2010 上将静态库链接到我的项目
使用 Visual Studio 数据库项目的 PostDeployment 脚本插入图像