2011-01-09 11 views
0

私の言葉が意味をなさないことを願っています...私は自分が探していることを説明する方法を正確にはわかりませんでした。Entity Frameworkモデルの "リレー"または "汎用化"プロパティを作成できますか?

私は次のようにエンティティのリストを返すジェネリッククラスのメソッドを持っています。

public abstract class ChildCRUDController<TModel> : CRUDController<TModel, ... > 
    where TModel : IChildEntity 

public ViewResult List(int id) 
{ 
    return View(repository.GetMany(x => x.ParentID == id)); 
} 

このコントローラは、かなりの数の他のコントローラによって実装されます。私が持っている問題は、IChildEntityを実装するすべてのエンティティが同じ親タイプを持つわけではないということです。この問題を回避するために、IChildEntityを実装するすべてのモデルのParentIDプロパティを作成し、同じコントローラを使用できるようにしました。私はリストのメソッドを呼び出すときに、私は次のエラーを取得する上で

public partial class PhoneNumber : IChildEntity 
{ 
    public int ParentID 
    { 
     get { return CustomerID; } 
     set { CustomerID = ParentID; } 
    } 
} 

と...

public partial class Transaction : IChildEntity 
{ 
    public int ParentID 
    { 
     get { return LeaseID; } 
     set { LeaseID= ParentID; } 
    } 
} 

しかし:

The specified type member 'ParentID' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

は、私は私が結果を達成することができる任意の方法はありますオブジェクトセットをメモリにプルしたり、エンティティ自体のすべてのプロパティの名前を変更せずに探していますか?

ありがとうございます!

答えて

1

あなたはListメソッドにフィールド名を渡すために、あなたはこのStackOverflowの記事に記載された技術を使用してそれを行うことができ、独自のクエリを構築するために喜んでいる場合:

ChildCRUDControllerに、フィールド名を指定し、再度動的に使用するインターフェースに制約された別の汎用タイプ・パラメーターを指定することができます。

+0

ダイナミックLINQライブラリを認識していませんでした。ありがとう! –

関連する問題