6

それはもっと良いですか?CodeFirst拡張機能を聞きましたが、プライムタイムの準備ができています。開発、パフォーマンスのオーバーヘッドなどに関する経験を共有してください。

4

2 に答える 2

6

まったく同じことを考えていたので、これはタイムリーな質問だと思います。私は真剣なeコマースモデルを作成しようとしています。また、POCOを永続性の懸念から解放し、ドメイン駆動設計に忠実であり続けようとしています。これまでのところ、私は非常に警戒しており、NHibernateに船をジャンプさせるべきかどうかについては危機に瀕しています。私がそうすることを妨げている唯一のことは、Microsoftが(そして迅速に)改善すると私が思うということです。

これまでの最大の問題のいくつか:

  • オブジェクトの具体化を細かく制御できない。EFはPOCOでゼロ引数コンストラクターを呼び出します。これは変更できない動作です。
  • 列挙型のサポートはありません。コミュニティは絶叫しています-絶叫!-これのために、そしてそれは起こりませんでした。回避策はひどいものであり、ドメインモデルを汚染します。
  • データベース内の列名と関係を制御しようとするときの奇妙なマッピングのバグ。私が考えることができる主なものは、複合キーと多対多の関係です。これらは回避でき、リリース時間までに修正されると思いますが、それでもイライラします。
  • SQLが正しくありません。私もDBAの仕事をしていますが、EFが生成するSQL(Code-Firstの有無にかかわらず)はひどいものです。

そして、これは氷山の一角にすぎません。私はEF4を学び始めたばかりで、ひどい障害に直面しています。もっと理由があるので、ここに追加します。私はまだそれを苦労しています。

(コミュニティが「自信がない」という別の投票をするかどうか疑問に思います。)


もっと:

  • 「奇妙なマッピングのバグ」の問題に追加するには:自己参照関係に参加している場合(たとえば、階層がある場合)、列の名前を制御することはできません。これは最終リリースで修正されると思います。
  • バッチ処理が不足しているため、データベースへのラウンドトリップが複数回発生します。たとえば、コレクションから一連のアイテムを削除するにはどうすればよいですか? すべてのエンティティをメモリにロードし、一度に1つずつ削除します。 小さな不満は、継承関係に参加するテーブルに挿入するときのDBヒットの数です。
  • モデルの変更に対処するインテリジェントな方法はありません。EFコード-スキーマを変更する必要がある場合は、まずデータベース全体を完全に削除するのが大好きです。
  • 拡張性のポイントはほとんどありません。EF4でサブスクライブできるイベントの数を文字通り数えることができます(そしてCode-Firstはそれ以上のものを提供しません)。
于 2011-01-31T04:02:46.700 に答える
0

私に関しては-私はEFを好みますが、いくつかの機能強化があります。基本的に、EFは次の利点を提供します。

  • ビジュアルモデルエディタ
  • データベース/モデル更新ウィザード(手動のXML変更の代わりに-私にとってひどいこと)

また、EFおよびL2S( LinqConnect )に基づくサードパーティの商用ツールを使用しており、次の機能を提供しています。

于 2011-02-02T16:51:39.540 に答える