簡単に言うと、WCF Data Services の Entity Framework プロバイダーは、スキーマの名前空間と EntityContainer の名前を、それぞれ DbContext の名前空間とクラス名から直接取得します。これは、コード ファースト方式を使用して開発された DbContext にも当てはまります。
クラス名や EDM(X) を変更せずに、このプロバイダーの動作を事後的に変更する方法はありますか?
背景/警告/意見: これはプロトタイピングには便利な動作ですが、実稼働シナリオでは、クラス名自体が実装の詳細であり、サービス コンシューマーから隠されている必要があります。
さらに、私の場合、作成/拡張している非常に一般的な DbContext を提供するフレームワークを使用しているため、名前を変更することはできません。
データ モデルの CLR 表現と EDM 表現の間にさらに "スペース" を作成する方法については説明していないことに注意してください。DataService<T>
むしろ、内部の CLR 名前空間と DbContext 拡張機能のクラス名 (EDM に保存されていますが、まったく問題ありません) が外部に公開されないように、拡張機能自体の動作を変更する方法を探しています。
サービス メタデータの特定のカスタマイズ ポイント (以下の custom-ns および custom-container):
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
<edmx:DataServices m:DataServiceVersion="1.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<Schema Namespace="<custom-ns>" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
<EntityType Name="EgEntity">
.
.
.
</EntityType>
.
.
.
<EntityContainer Name="<custom-container>" m:IsDefaultEntityContainer="true">
<EntitySet Name="EgEntity" EntityType="<custom-ns>.EgEntity" />
.
.
.
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>