C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2009/05/26 13:03

こだかたろうです : New EntityFramework

不信任投票で挙がっていた点がかなり改善されそうですね。
レイジーロードがサポートされることはなおきさんから聞いていましたが、まさか PI もサポートされるとは。
気になるのは PI レベルがどのくらいなのかですね。
How to: Define Custom Persistence-Ignorant Objects (Entity Framework) を見る限り POCO は余裕でクリアしてますが、Requirements for Using Persistence-Ignorant Objects (Entity Framework) を見るとやはりいくつか制約があります。

以下、英語苦手なのできっと間違ってる所があります。(つか、自分で意味がよくわかってない所もあるので…。誰かつっこみお願いします T-T)
  • カスタムデータクラスは public でなければならない。
  • カスタムデータクラスは sealed にできない。
  • カスタムデータクラスは abstract にできない。
  • カスタムデータクラスは IEntityWithChangeTracker や IEntityWithRelationships を実装できない。
  • 概念モデル内のエンティティ型のプロパティにマッピングされた各プロパティは public でなければならない。
  • カスタムデータクラスはデフォルトコンストラクタを提供しなければならない。
  • 概念モデル内で定義されたナビゲーションプロパティは、対応するナビゲーションプロパティがカスタムデータクラスになければならない。関連オブジェクトの遅延ロードをサポートするためには、このプロパティを virtual として宣言する必要があり、sealed と宣言することはできない。
  • 一対多または多対多の関連を表すナビゲーションプロパティは、ICollection<T> (T は関連端の型) を実装する型を返さなければならない。
  • データモデル内のエンティティ型のプロパティにマッピングされたプロパティは、virtual で、getter 及び setter を実装しなければならない。
  • 概念モデル内の複合プロパティは、参照型を返すカスタムデータクラスのプロパティにマッピングしなければならない。複合プロパティを、値型や列挙型にマッピングすることはできない。
NHibernate に比べると若干 PI レベルが低そうですが、許容範囲内ですかねー。


PIレベルとかささっと触れる分には良いんですが、解説レベルに落とそうとすると結構前提知識が必要になるんですよねぇ。。。

今のところそんな予定は無いですが、若干嫌な予感がします。

でも大幅な機能強化は嬉しい所ですよね。

個人的にはEntity Frameworkの影響を受けるデータプロバイダや、Dynamic Data、Data Servicesの挙動とかが気になりますー。

2009.05.26 14:45 URL | ナオキ #- [ 編集 ]


> 今のところそんな予定は無いですが、若干嫌な予感がします。

あー・・・前回かなり苦労されてましたもんね ^^;
役に立てない可能性高いですが、そんな予定が舞い込んできた時には、何か手伝えることがあったらなんなりと言いつけてください^^;
(ホント役立たなさそうだな…)

> 個人的にはEntity Frameworkの影響を受けるデータプロバイダや、Dynamic Data、Data Servicesの挙動とかが気になりますー

Dynamic Data も Data Services も、未だに触ってないです (汗)
一回位触っとかなきゃなぁ。。。

2009.05.26 22:13 URL | よこけん #Ay6tTHf6 [ 編集 ]












トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/265-52e98aee