EFコードファーストCTP 5を使用してバイナリ(ファイル)データを保存して取得する簡単な方法があるかどうかを確認しようとしていますか?私は実際にFILESTREAMタイプを使用したいと思っていますが、私は実際にそれを動作させるための何らかの方法を探しています。Entity Frameworkコードを使用してイメージを保存する方法CTP 5?
答えて
EFでSQL FILESTREAM
を使用することはできません。 EFは異なるデータベースサーバーの上で動作するはずですが、ファイルストリーム機能はSQL 2008以降の特定の機能です。あなたは古い方法でそれをやろうとすることができます - varbinary(max)
データベーステーブルで使用し、マッピングされたクラスでバイト配列を使用します。
編集:
リトル明確化 - あなたは、データベース内のFILESTREAM
を使用することができますが、EFは、ストリーミングを利用しません。それは標準varbinary(max)
としてそれをロードします。
Ladislavが言及しているようにプロパティをbyte []として宣言するだけです。
public class Product
{
public int Id { get; private set; }
public string Name { get; set; }
public byte[] ProductImage { get; set; }
}
これはかなりです。プロパティをマップしない場合、コンベンションはvarbinary(max)
にマップされます。 あなたは、データベース内の画像列を持っている場合は、すでにちょうどProductImageプロパティに[Column(TypeName = "image")]
を追加したり、コードマッピングを好む場合、コンテキストクラスであなたのOnModelCreatingオーバーライドにこれを追加します。
modelBuilder.Entity<Product>().Property(p => p.ProductImage).HasColumnType("image");
私はそれを持っている問題は、ということです私は、製品をフェッチするたびにバイナリデータをロードする必要はないので、プロパティを怠惰にする方法は見つけられませんでした。 私は正しく思い出していませんが、NHibernateはそれを箱から出すことができます。
私はいつも遅延ロードを管理し、また、テーブルを正規化するために、1対1の関連でProductImage
のような別のクラスを作成します。
public class ProductImage
{
public int ProductId { get; private set; }
public byte[] Image { get; set; }
}
このテクニックを使用して大幅にパフォーマンスが向上しました。 – jsturtevant
ファイルイメージの列を含まないビューを作成し、テーブルの代わりにビューを指し示すEF内に2番目のエンティティを作成するほうがはるかに簡単ではないでしょうか? "ProductLite" –
@ C.リスト何年もEFを使ってきたとは思ってもいません。それはすばらしいアイデアです。私はそれを使って、同じことをするために使っていた不要なビューを取り除きました。それを「仮想エンティティ」と呼ぶことにしましょう:) –
- 1. Entity Frameworkを使用したSql Azureへの接続「コードファースト」ctp 5
- 2. Entity Frameworkの4 CTP 5コードファースト開発
- 3. Entity Frameworkの4(CTP 5)同時実行
- 4. Entity Framework 4 CTP 5 POCO - ユニットのテスト方法<T>
- 5. Entity Framework 4およびコード先頭CTP 5 - キーがない
- 6. Entity Framework 4 CTP 5 POCO - 既存の空のSQLデータベースをホスティング環境で使用していますか?
- 7. asp.netでEntity Frameworkを使用して関連エンティティを保存する方法
- 8. Entity Frameworkを使用してAPIにエンドポイントリクエストを保存する
- 9. Entity Frameworkコードを使用してリストをデータベースに保存できません
- 10. Entity Framework 4.1のアンインストールJune CTP
- 11. Entity Frameworkコードで最初にCTP 5を使用してジオ空間検索を実行する最良の方法は何ですか?
- 12. Entity Framework 5で大きなグラフを保存する
- 13. Entity Framework 4 CTP 5 POCO - ルックアップテーブルに複数の行を挿入しますか?
- 14. Entity Frameworkナビゲーションプロパティを使用する方法
- 15. Entity Frameworkのコードを最初に使用する方法
- 16. Entity Frameworkを使用してWPFでDataGridをリフレッシュする方法
- 17. 特定のフロートをEntity FrameWorkに保存する方法
- 18. Entity Frameworkを使用して既存のプロパティにオブジェクトを添付する方法
- 19. Entity Frameworkを使用して既存の行を更新する方法は?
- 20. Entity Frameworkを使用して子コレクションに変更を保存する
- 21. Entity Frameworkを使用して多対多の関係でデータを保存する
- 22. Entity Framework 5 - 変更を保存した直後にDbContextをリフレッシュする
- 23. イメージをファイルに保存し、MVC3を使用してイメージをデータベースに保存する方法は?
- 24. Entity Frameworkを使用してビジネスロジックを実装する方法は?
- 25. ブリッジテーブルを使用してuserIdを取得する方法Entity Framework
- 26. LDAPを使用してEntity Frameworkを構成する方法は?
- 27. IdentityDbContextを使用してEntity Frameworkをモックする方法は?
- 28. Entity Framework CTPコード最初の列の名前と関係
- 29. Entity Framework 6 2つの外部キーを使用してエンティティを保存する方法
- 30. をEntity Frameworkの5
はい、NHibernateのは、列固有の遅延ロードを行うことができますボックスの外:http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties。 – gabe