私は最近Entity Framework 5に切り替えました。現在、既存のデータベースからPOCOクラスを生成したいと思います。遅延ロードと変更追跡の両方が必要です。したがって、すべてのスカラープロパティは、ナビゲーションプロパティと同様に仮想でなければなりません。既存のデータベースからPOCOプロキシを生成する方法
新しいADO.Netエンティティデータモデルを追加すると、.edmxファイルとその他の.csと.ttファイルで終了します。
最初に、生成されたPOCOクラスがデフォルトで変更トラッキングプロキシの要件を満たさない理由、つまりスカラープロパティが仮想ではないのだろうかと思います。
第2に、プロキシ対応のpocoクラスをどのように生成できますか?
PS:私はスラウマの答えを最高と唯一の答えとして受け入れましたが、私はそれの最初の部分に同意しません。制限とパフォーマンス:プロキシ対応するエンティティの制限について
:ここ
Slaumaは約2プロキシの問題を語る私の議論はある クラスがエンティティによってDBまず方法で生成された場合フレームワークでは、変更追跡プロキシを有効にするためにクラスが従わなければならないルールは、それらが制限的ではないのでそれほど重要ではありません。ナビゲーションコレクションがIListかHashSetかどうかは本当に気になりますか?制限について話すことは、アプリケーション内にperiorの設計されたクラスがあり、そこからテーブルを生成する場合にのみ有効です。
複雑なプロパティは、DBでは最初にサポートされていません。だから私たちは議論から除外することができます。 perfomranceについて
- :私が研究している the addressed articleでも他のいくつかの実験では、これまでの結果は、スナップショットの賛成でプロキシを拒否することは非常に説得力がありません。最初に、実験は多数の実体a.k.a 10,000で行われた。アプリケーション(データベースではない)のバッチ処理が多数のエンティティで機能することはありえませんが、ストアドプロシージャなどのより良いアプローチが想定されています。 第2に、アプリケーションの種類とニーズに応じて、通常、リポジトリパターンが実装され使用されている場合など、いくつかのエンティティを処理します。プロキシとスナップショットのパフォーマンスに違いはありません。興味深いことに、対処された実験では、プロパティに同じ値を再割り当てすることは、プロキシのパフォーマンスが劇的に低下する唯一のケースでした。しかし、誰がこれを本当にしていますか?変更トラッカーに繰り返し通知するのを避けることは非常に簡単です。この場合も、多数のエントリーが処理されるときに重大な問題が発生します。
ありがとうございました。私はあなたの答えの最初の部分に同意せず、私は議論を反映するために私の質問を更新しました。しかし、2番目の部分は非常に便利でした。私はCode-Firstモデルを認識していますが、それは私の心配ではありません。 – Alireza
@Alireza:部分的に私は第1部のあなたの評論家に同意します。私は自分自身の変更追跡プロキシのファンであり(http://stackoverflow.com/a/7112470/270591)、それらは私のプロジェクトの1つで命を救ってくれました。 Arthur Vickerの記事が公開されたあと、私はちょっと注意を払いました。最初の部分は、新しいt4テンプレートがPOCOを作成するときにスカラープロパティから 'virtual'修飾子を削除した理由を説明するEFチームの視点の引用です。 – Slauma
おそらく彼らはあなたが言ったように推論していたかもしれませんが、依然として代理人を再び有効にする方法を教えることができました。これはマイクロソフトによって黙って行われ、プロキシにバグがあると思うかもしれません。 – Alireza