1

現在、既存のデータレイヤーをEF5に移行しようとしています。

移行前は、地理データをSQL空間データ構造に保存していませんでした。EFが空間データをサポートするようになったため、コードをリファクタリングしています。

セルフトラッキングエンティティを使用して、SilverlightクライアントとWCFサービス間でデータを交換しています。問題は、DbGeometryタイプをシリアル化できないため、エンティティをクライアントと共有できないことです。

私はポイントを逃していることを願っています。したがって、直接的な解決策が存在します。一方で、誰かが回避策を提供してくれれば幸いです。(DTOを使用できますが、大幅なリファクタリングが必要になる場合があります。)

4

1 に答える 1

2

実際、2つのオプションがあります。最初のオプションは明白です。DTOを使用してデータを転送します。

2番目の答えは少し複雑です。しかし、私は次のアプローチを使用して問題を解決しました。

まず、リフレクターを使用してクラスDbGeometryとクラスを逆コンパイルしました。DbGeography次に、asという名前のSilverlightでアセンブリを作成し、System.Data.Spatialこのアセンブリに逆コンパイルされたクラスを追加しました。次は難しい部分でした。Silverlightでコンパイルできないコード(DB接続関連のコードなど)をすべて削除しました。

次に、2つの基本機能のみをサポートするSilverlight空間データライブラリを作成しました。データをWKTとして取得し、データをWKTとして保存します。これらの2つの関数は、関連データを消費し、WCFサービスを使用してデータを保存するのに十分です。

于 2013-07-24T08:53:30.410 に答える