0

詳細が多すぎる/不十分である場合、またはその一部が無関係である場合はお詫びします。これがこのボードでの最初の投稿です。

バックグラウンド

現在、VS2010 を使用して C# で Silverlight 4 および WCF RIA (SP1) ベースのアプリケーションを開発しています。スタックは次のとおりです: SQL Server -> nHibernate -> Domain Service -> Service Agent -> Silverlight 4 Client (MVVM)

データベースには同じフィールドを持つ 4 つのテーブルがあり、各テーブルには同じデータの異なる「タイプ」が保持されています。

データは実際にはタイプ列を持つ1つのテーブルにあるはずですが、変更できないレガシーデータベースです。

テーブルごとに POCO を作成し、4 つの異なるエンティティ セットへのアクセスと更新を処理する単一のドメイン サービスを作成しました。これらの型は Silverlight クライアントに投影され、すべての CRUD は期待どおりに機能します。

問題

T が 4 つのエンティティ タイプの 1 つである ObservableCollection を含むビューモデルがありますが、異なるエンティティ タイプを保持するために 4 つのコレクションを使用したくありません。UI を使用すると、ユーザーは型を選択できます。同じコレクションと UI バインディングを使用してそのデータを編集したいと考えています。

私が試してみました

  • 汎用ドメイン サービスを作成しますが、サポートされていません。

  • サーバー側のエンティティ型を抽象クラスから継承するか、インターフェイスを実装しますが、ドメイン サービスは抽象クラスまたはインターフェイスを投影しません。

  • クライアント側インターフェースを実装する 4 つの投影されたエンティティのクライアント側部分クラスを作成します。ただし、を割り当てようとObservableCollection<MyEntity>するとObservableCollection<MyEntityInterface>、次のエラーが発生します。

Cannot implicitly convert type 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.StandardInterestRate>' to 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.IInterestRate>'

その理由は、StandardInterestRate が RIA Entity クラスを継承しているためだと思います。どんな考えでも大歓迎です。

4

1 に答える 1

0

試す

ObservableCollection<MyEntity> entities = ...
ObservableCollection<MyEntityInterface> iEntities = new ObservableCollection(entities.Cast<MyEntityInterface>());
于 2011-06-28T20:54:37.097 に答える