2017-04-20 92 views
0

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

将此图像插入数据库项目是一个很好的做法?我有一个WindowsService项目和一个带有实体框架的ASP.NET MVC项目。我应该在其他两个项目的每一个项目中的某种初始验证中插入此图像吗?

回答

2

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

给定一个表

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值出在INSERT语句如

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

(完整的脚本在这里:https://gist.github.com/gavincampbell/a25431dffd3555563a052c297a32415e)使用

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

相关问题