4

我想将 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.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 保存文件,将每个字节的字节保存到新的字节数组中,但我总是收到此错误。

有谁知道,如何解决?

PS我不想将文件保存到数据库中,而不仅仅是文件的URL,所以我需要保存字节[]。PS2 将其他类型插入数据库工作

感谢您的任何建议:)

解决了:

我已经解决了:

如果要将 blob 放入数据库,请使用:

IDbCommand cmd = db.CreateInsertStatement(new Files() { File = f });
cmd.ExecuteNonQuery();

一切都会完美无缺!

当然,如果有人知道如何使用“插入”方法将 Blob 放入数据库 - 就写吧。我还是不知道正确答案。

4

1 回答 1

2

我遇到了同样的问题。您的解决方案有效,但它更像是一种解决方法。我向 ServiceStack.OrmLite 提交了一个拉取请求来解决 SQL Server 的问题。

于 2013-01-29T21:09:29.007 回答