我想将File保存到我的数据库中,所以我将其解析为byte []:
byte[] f = File.ReadAllBytes(@"E:\Path\To\My\File\MyFile.foo");
要创建表的类:
public class Files
{
[AutoIncrement]
public int Id { get; set; }
public byte[] File { get; set; }
}
接下来,在我的服务中,我想将我的文件插入db:
db.Insert(new Files() { File = f }); // db is object to database
在此之后我在网站上收到错误:
Implicit conversion from data type varchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query.
我不知道如何改变它.我试图通过MemoryStream,FileStream保存File,将每个字节的字节保存到新的字节数组中,我总是得到这个错误.
有谁知道,如何解决?
附:我希望不将文件保存到DB而不仅仅是文件的URL,所以我需要保存byte [].
P.S.2将其他类型插入数据库工作
谢谢你的建议:)
解决了:
我解决了它:
如果要将blob放入数据库使用:
IDbCommand cmd = db.CreateInsertStatement(new Files() { File = f });
cmd.ExecuteNonQuery();
一切都会完美!
当然,如果有人知道如何用“插入”方法将Blob放到DB中 – 写下来.我仍然不知道正确的答案.
最佳答案 我遇到了同样的问题.您的解决方案有效,但更多的是解决方案.我向ServiceStack.OrmLite提交了一个
pull request来修复SQL Server的问题.