前々からの悩みと言えば悩みだけど、EntityFrameworkで作成したエンティティをWCFのデータコントラクトで使っちゃっていいのかって話。
現行システムはデータベースからエンティティを生成した関係でWCFでそのままデータコントラクトで公開しちゃうとフィールド以外の内包されたデータが見えちゃうのが何か嫌でエンティティをコピーしたモデルを作ってそれでWCFでやりとりしたりしたんだけど、ぶっちゃけかなり面倒だったりした(特にデータベース修正時)。
今回はコードファーストでやってるからエンティティにデータコンテキスト属性つけてそのまま使っちゃえばいいんじゃないか?って最初考えてたんだけど、たとえばテーブルを結合したビューとかはどうすんの?って考えたときコードファーストのエンティティ達とそれらとは役割的に別物なんじゃないの?って思っちゃたりしたわけで…。じゃあWCF上でデータコントラクトで括って同一視したらまずいんでないの?って話になっちゃうんですよね。
こんなこと考えてると制約ばっかりになりそうな気もするし、社内向けのシステムでそこまで凝る必要ないだろって突っ込まれそうな気もするけど性分なんで…。
とりあえず面倒だけど現行を踏襲する方向かなぁ。なんかただの愚痴みたな感じなってしまった気がする。