2012-01-26 13 views
1

私は解決策を見つけることができなかったという問題があり、誰かが助言を与えることができるのだろうかと思います。擬似データコンテキストと外部キー/ナビゲーションプロパティ

私は単体テストのためにメモリデータセットを持つことを意図して、インターフェイスとt4テンプレートを使っていくつかの魔法の魔法を使って偽のdatacontext/objectsetを持っています。

ただし、外部キーの値/ナビゲーションのプロパティはどうすればよいですか?

私はホテルと顧客があると言いますが、ctx.Hotelsにはいくつかの価値がありますが、Customer.Hotelsではありません。

return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Hotel>("HotelModel.FK_Customers_Hotels", "Hotel").Value; 

と1対多:

return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<BookingRow>("HotelModel.FK_BookingRows_Customers", "BookingRow"); 

私のスキルレベルがちょうどさえ何を理解するだけでは十分ではないgetが、それは1対1の関係であれば、このようなものですここで起こっている。

[編集:] 偉大なマスタージュリー・リーマンはこれがデッドエンドであることを確認します。あなたはエンティティオブジェクトを適切に模倣することはできません。あなたはそのためにPOCOが必要です。

答えて

3

EntityObjectエンティティを使用しているときにObjectContextと入力すると、ほとんどの場合、RelationshipManagerはあなたのモックに置き換えられないリアルなクラスです。また、あなたのエンティティは、非モック可能なEFコードに大きく依存しています。

注:「主に」モックすることができますが、実際のオブジェクトへの呼び出しを傍受し、代わりにそれらのメソッドに転送する特別なフレームワークが必要です。これはTypeMock IsolatorまたはMS Molesでのみ可能です。

Btw。 EFコードを嘲笑することはあなたがしたくないことです - this answerとリンクされた回答を通過してください。新しいEF APIをターゲットにしているものもありますが、問題は同じです。