EntityFrameworkを使用してPatientEntities用のWCFデータサービスをまとめています。
私のソリューションは、これらの要件に対処する必要があります。
- エンティティPatientのプロパティDateOfBirthは、SQLServerに文字列として格納されます。エンティティクラスが「文字列」型ではなく、DateTime型も使用するのが理想的です。(ストレージレイヤーから抽象化するため、これが可能になると思います)。エンティティとSQLServerが同期するように、DateTime / stringとの間で変換する変換メカニズムをどこに配置できますか?ストレージレイヤーの構造を変更できないため、回避する必要があります。
- クライアントはLINQ式を使用してサービスを利用できるため、WCFデータサービス(読み取り専用なので、変更を保存する必要はありません)を使用する必要があります。GetPatient(int ID)などの単一のメソッドに制約されることなく、必要な任意のクエリシナリオに基づいて結果を生成できます。
DTOを使用しようとしましたが、ObjectContextをDTOにマッピングする際に問題が発生しました。理論的には可能ではないと思います...または、可能であれば複雑すぎます。
自己追跡エンティティを使用しようとしましたが、正しい場合は.edmxファイルのメタデータが必要であり、これにより別のプロパティデータ型が許可されません。
また、エンティティゲッターメソッドにカスタマイズを追加して、タイプ「string」のプロパティ「MRN」が返される前に.Replace( "MR〜"、string.Empty)を実行する必要があるようにします。これをgetterメソッドに追加できますが、Entity Frameworkが次にエンティティクラスを更新するときに、これを上書きするという問題があります。これらを置くことができる恒久的な場所はありますか?
代わりにPOCOを使用する必要がありますか?それはWCFデータサービスでどのように機能しますか?サービスはどこでメタデータを取得しますか?