4

File をデータベースに保存したいので、バイト [] に解析します。

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 でファイルを保存しようとしましたが、常にこのエラーが発生します。

誰もそれを修正する方法を知っていますか?

PSファイルへのURLだけでなく、ファイルをDBに保存したいので、バイト[]を保存する必要があります。PS2データベース作業への他の型の挿入

アドバイスをありがとう:)

解決済み:

私はそれを解決しました:

blob をデータベースに入れたい場合:

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

そして、すべてが完璧に機能します!

もちろん、「挿入」メソッドを使用して Blob を DB に配置する方法を知っている人は、それを書いてください。正解はまだわかりません。

4

1 に答える 1

2

同じ問題が発生しました。あなたのソリューションは機能しますが、それは回避策です。SQL Server の問題を修正するために、ServiceStack.OrmLite にプル リクエストを送信しました。

于 2013-01-29T21:09:29.007 に答える