次の場合を考えてみましょう。3つのテーブルがあります
LampPost, columns: Id (PK, int), StreetId (FK, int)
Street, columns: Id (PK, int), CityId (FK, int)
City, columns: Id (PK, int), Name (varchar)
通常のケースでは、都市ごとに多数(数万)の街灯柱があります。たとえば、LampPost管理システムを作成していて、LampPostを都市でフィルタリングできるようにしたいとします。しかし、Cityテーブルについて私が知っているのは、上記の2つの列が含まれていることだけです。あるサーバーでは、私が気にしない追加の列があるかもしれません。そして、同じことがテーブルストリートにも当てはまります。
現在、データモデルにはすべてのテーブルがあり、などのクエリが可能ですがcontext.LampPosts.Where(lp => lp.Street.City.Name == "Paris")
、テーブル全体に影響を与えることなく、これを実現する別の方法が本当に必要です。
また、データモデルにテーブルを追加して(最初にデータベースを使用し、.NET4.0ではEF5を使用しています)、不要な列を削除しようとしましたが、EFはマップされていない列について不平を言いました。
これは、ストアドプロシージャまたはある種のexecutequery呼び出しのいずれかで実行できると確信していますが、どちらもよく知らないので、皆さんにお願いします。これを実行するための最良の方法は何でしょうか。