マスターで多くの種類のアイテムを表示できるマスター/ディテール シナリオを作成する必要があります。それらはすべて実装されていますIDto。
interface IDto
{
int Id { get; set; }
string Title { get; set; }
EntityType { get; set;
}
enum EntityType
{
Contact,
Person,
Company,
Customer
Employee,
Vendor,
Job
}
注: Entity Framework EDM (生成ObjectContextおよびEntityObjects) を使用しています。
クラス階層は、はContactのサブクラスでPersonありCompany、Personは のベースクラスであり、は のベースクラスです。には、または のいずれかのプロパティがあり、 のリストがあります。EmployeeCompanyVendorCustomerContactContactPersonJob

マスター リストで、DTO のコレクションをロードしますDomainService(これは です。コントラクトLinqToEntitiesDomainService<ObjectContext>で指定されたフィールドのみをIDto選択し、選択すると、エンティティ全体とそのすべてのフィールド/関連データをロードします詳細エリアで。
更新:別のアイデアを考えました。
列挙型が int または tinyint として格納される上記のコントラクトの 3 行を返すデータベース ビュー (SQL2008) を作成しIDto(その後、列挙型をバイトに変更します)、edm で階層ごとのテーブルを作成できます。リストに格納されている各 EntityType に対して、 からそれを返しDomainServiceます。
ところで、すべての列挙値がクエリに使用されます。実際、エンティティはContactそのEntityTypeプロパティに対して返されません。これContactは、抽象的で aPersonまたは a のいずれかである可能性があるためですCompanyが、両方をクエリするオプションが必要です。
更新 2
顧客は、リスト内の項目のそれぞれについて、そのすべての仕事も望んでいます。
上で説明した階層に基づいて、 a Customer- すべてのジョブを選択します。aContactまたは aの場合Person- その を選択します( a の場合)。またはs は、s に登録するためのものではありません。CustomerJobCustomerVendorEmployeeJob
これを行う唯一の方法は、データベースビューを使用することだと思います。
私が間違っている?結果は何ですか?私はRIAでSL5を使用しています。
ビューの方法は良いですか?または、クライアント POCO を使用して、クライアント内のすべてのクエリを処理する必要がありますか? 実際には、この値は連絡先の名前とその仕事を取得するためにのみ使用されるためです。さらなる詳細と操作は、Entityエンティティ自体の他のビューで行われます。
それで、専門家はどう思いますか?