2011-06-20 8 views
0

私が現在使っているアプリケーションでは、Linq2SQLを使い、クラス1-1をデータベーススキーマにマッピングします。これは一般的に現実的ですが、DBの特定の領域では不便です。私はEntityFramework 4.1を試していて、この特定の領域に対してより自然な厳密な型指定のマッピングを取得できるかどうかを確認しています。 - fkService(GUID)EntityFramework 4.1:複数の専門クラスを同じテーブル

tblSubscription [つのサービスは、多くのSubscriptionParametersを有し有する]


領域は(各テーブルは、各行のIDのGUID-UNIQUEIDENTIFIERを有する)多少のようなのように見えます

tblService
[多くのサブスクリプションを持っているが、多くのServiceParametersを有する] - sServiceType(文字列)

tblSubscriptionParameterは[、1つのサブスクリプションを有するものServiceParameter有する]
- sValuをE(文字列 - intまたはBOOLのしばしばストリング表現) - nIndex(INTは - 同じサービスパラメータに対応する複数の値のために)
- fkServiceParameter(GUID)

tblServiceParameterは[つのサービスを有してい
は 多くのSubscriptionParameters]
- sName(String) - fkService(Guid)


ここでの基本的な表はサブスクリプションです。ハードコーディングしたいサブスクリプションの種類はいくつかあります。これは私を与える利点は、私は似た何かを書くことができるかもしれないということです。代わりに私はLinq2SQLを使用して従わなければならない、むしろ醜いパターンの

var allTestParams = ...SecretSubscriptions.Select(s => s.TestParameter) 

var allTestParams = ...Subscriptions.Where(s => s.Service.Name == "SecretService") 
    .Select(s => s.SubscriptionParameters.First(sp => 
     sp.ServiceParameter.Name == "TestParameter").Value); 


だから私はしたいと思います特定の基本サブスクリプションクラスから継承し、どのサービスタイプが属するかを明示し、指定されたSubscriptionParametersに取得して設定できるプロパティを持つ、特別なサブスクリプションクラスを持っています。同時に、一般的なサブスクリプションクラスを使用して、パラメータのコレクションに簡単にアクセスできる特定のアプリケーション(監査など)を使用したいと考えています。

より強力な型のエンフォースメントでより流動的にコーディングできるように、どのようにしてEntityFrameworkを構成できますか?

答えて

0

EFはこれを手伝ってくれません。これは、一般的なサブスクリプションを階層ごとの継承テーブルを介して特殊なタイプにマッピングするのに役立ちます(ただし、Linq-to-SQLも同様に対応できます)。しかし、関連するエンティティを派生したサブスクリプションタイプのパラメータとしてマッピングすることはできません。変更のためにカスタムデータベースビューとストアドプロシージャが必要です。

関連する問題