1

Entity Framwork 4.0 を使用したプロジェクトがあります。モデルを描画し、SQL Compact 3.5 DB を生成します。

大規模な BLOB ストアが必要だったため、 Imageデータ型の列を作成しました( Binaryは 8000 バイトに制限されているため)。ただし、EF 4.1 に更新すると、モデルは暗黙のうちにBinary列を持つように変換されました。

心配する必要はありません。元に戻すだけです。問題は、画像が選択できなくなったことです。また、バイナリを指定して長さを大きな値、たとえば 100000 に設定すると、DB を生成しようとするとエラーが発生します。

EF 4.1 リリース ノート関連する ADO.net チームのブログ投稿関連する問題を説明する 3 番目の投稿、および関連する問題について議論する SO クエストから、コード ファーストのアプローチで動作するいくつかのポインターを見つけました。ただし、これらはすべて、 Code Firstアプローチを使用した問題について語っています。

Model Firstを解決するための指針はありますか?

ありがとう!

4

2 に答える 2

0

画像をバイト配列に変換してそのように保存し、データベースから引き出すときに画像に変換します。これは、コードが最初にアプローチする限り、ほとんどのブロブ型データを保存する方法です。あなたが言及した問題には特定の理由がありますデータベースでコード ファースト API と流暢なマッピングを使用することはできません

編集:

モデルを最初に使用している場合、edmx ファイルの将来の参照でイメージが非推奨になるため、8kb を超えるデータ型には varbinary(max) を使用します。データベースの最初の設計を使用している場合は、データベースのデータ型を変更してから、データベースからモデルを再生成できます

codefirst api データベースを作成してから、エンティティ フレームワーク powertools ctp を使用してリバース エンジニアリングを行う codefirst を使用して、コード ファーストのモデルとコンテキストを生成します。

于 2011-08-09T18:44:58.310 に答える
0

.edmxモデル ファイルを XML エディタで開く必要があります。<edmx:StorageModels>セクションではType、データPropertyを からvarbinaryに変更しますimage。例えば:

<EntityType Name="DataSet">
 <Property Name="data" Type="image" Nullable="false" />
</EntityType>

ファイル内の列のタイプを手動で変更する必要がある場合もあり.sdfます。

これはちょっとしたハックなので、モデルを変更するたびにこれを行う必要があります。

于 2013-03-20T07:05:28.830 に答える