2011-04-28 1 views
0

Webサービスから返されるカスタムオブジェクトの配列があります。 オブジェクトはデータベースでモデル化されており、モデルでedmxファイルを作成しました。データベース挿入のためにSOAPオブジェクトをEFテーブルに変換する

これらのオブジェクトをそれぞれのEFコンテナに入れる一般的な方法はありますか?

約50種類のオブジェクトがあります(それぞれ20-30人のメンバーが返されます)。私は、それぞれを変換するためのクラスを作成したくないと思います。私は変換のいくつかの異なる風味を試しましたが、AddObjectは配列を取らないので、私は困惑しています。あなたは何ができるか

private MyEntities dbContext; 
ResponseObject[] TheResponses; 
using (MyWebService wsInstance = new MyWebService()) 
{ 
    TheResponses = wsInstance.DoStuff(); 
    dbContext = new MyEntities(); 

    dbContext.Table1of50.AddObject(<whatgoeshere>); 
} 

答えて

1

汎用的な方法がAutoMapperそれでも、このソリューションを使用している

これは、あなたのオブジェクトを作成する必要があります適用されない場合は...返され、持続したオブジェクトとの間の差に応じていくつかの制限があります。手作業の解決策はアダプターパターンです - カスタムT4テンプレートを作成することによってこの解決策を自動的に行うこともできますが、戻されたオブジェクトと永続化されたオブジェクトの違いにもよります。別の可能性は、クラスのインスタンスが自動生成されたクラスの代わりに作成されるように(これはたいていカスタムプロキシを作成することを意味する)デシリアライゼーションをオーバーライドすることです。

これを行う方法はありますが、返されたオブジェクトと永続化されたオブジェクトとパターンの違いに厳密に依存しています。違いがすべての関連するクラスのペアの中で同じ症状を持たない場合は、ほとんどすべての自動化を行うことはできません。

0

は、彼はすでにあなたは(添付付き)エンティティ・コンテキストに直接追加することができ、あなたのEFのオブジェクトを作成しますので、Webサービスを適応させることです。しかし、これはあなたのWebサービスがあなたのEFタイプを知っていなければならないことを意味します。

+0

Webサービスは別の会社によって管理されているため、サービスの変更はオプションではありません。 –