2011-01-09 20 views
0

我希望我的措辭很有道理......我不太確定如何解釋我想要做的事情。我可以爲實體框架模型創建「中繼」或「通用化」屬性嗎?

我有一個泛型類的方法是如下返回實體的名單:

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庫。謝謝! – 2011-01-09 18:42:50

相關問題