私の EF モデルは、SQL Server データベースから生成されました。次に、EF モデルに対して RIAServices の DomainService を生成しました。エンティティの 1 つは「EntryCategories」と呼ばれます。DomainService は次のメソッドを作成しました。
public IQueryable<EntryCategories> GetEntryCategoriesSet()
{
return this.Context.EntryCategoriesSet;
}
私のユーザー インターフェイス表示モデルは物理モデルとはかなり異なっているため、そのモデルと関連するエンティティに対して独自の DomainService を作成することにしました。はい、生成されたものを変更することを意図していることはわかっていますが、そこには非常に多くのものが含まれているため、小さなことに焦点を当てたいと思いました。
生成された DomainService からEnableClientAccess属性を削除し、ClientDomainService という新しいクラスを追加して、生成された DomainService をカプセル化しました。
[EnableClientAccess()]
public class ClientDomainService : DomainService
{
// the generated domain service encapsulated in my new one.
private DataDomainService _dcds = new DataDomainService();
// reimplement one of the DataDomainService methods
public IQueryable<EntryCategories> GetEntryCategories()
{
return (from t in _dcds.GetEntryCategoriesSet() where t.EntryCategoriesVersions.EntryCategoriesVersionId == datahead.EntryCategoriesVersions.EntryCategoriesVersionId orderby t.DisplayOrder select t);
}
}
私が最初に試みたのは、GetCateogoriesSet メソッドを再実装することですが、基になるデータはクラス内の別のエンティティに基づいてフィルター処理されます (表示されていません)。しかし、これをビルドすると、エラーが表示されます。
Entity 'DataProject.Web.EntryCategories' has a property 'EntryCategoriesVersionsReference' with an unsupported type
CientDomainService をコメントアウトし、生成された DomainService のEnableClientAccess属性を置き換え、元の GetEntryCategoriesSet メソッドに同様の linq フィルタリングを配置すると、プロジェクトはエラーなしでコンパイルされます。
生成された DomainService の何が特別で、私の新しい DomainService にはありませんか? そのmetadata.csファイルですか?