我是新來的實體框架,我堅持以下。EF EntityObject動態屬性訪問
我有一個已經導入到EDMX模型中的現有數據庫。
我的一些實體共享「所有者」的相同概念。
每個實體都有一個「所有者」的自定義名稱。有時它被命名爲「作者」,有時也稱爲「所有者」,有時以法文「auteur」命名。
所以我實現了一個簡單的接口並創建了部分類,以便我的實體可以共享同一個命名概念「所有者」。
public interface IAPIResource
{
int owner { get; }
}
而且我對實體的博文
public partial class BlogPost : IAPIResource
{
public int owner { get { return auteur; } }
}
現在我想在LINQToEntities查詢使用它,但LINQ告訴我,這是不可能的,因爲IAPIResource不是一個實體型偏類!
public List<T> GetFilteredEntities<T>(int owner, IQueryable<T> entities, MyDBContext db)
{
return entities.Where(e => ((IAPIResource)e).owner == owner).ToList();
}
我與反思(.GetType
和.GetProperty
和.GetValue
)嘗試,但LINQ不支持,要麼。
我也嘗試過使用POCO,但沒有多少運氣。
而且我不想用抽象實體等修改我的數據庫模型。
有沒有人有一個簡單的解決方案,而不潛入LINQ表達?
注意:真正的查詢要複雜得多,這就是爲什麼我不願意使用表達式。
謝謝。
嗨hvd,謝謝你的回答。我可能會錯過一些東西,但我嘗試了您的解決方法,但它也不起作用。 LINQ仍然告訴我它不能將BlogPost轉換爲IAPIResource,因爲它不是原始的EDM類型。你應該注意到代碼中的「,class」似乎不正確(我使用VS2010,.NET 4.0),所以我放棄了它。 –
@ user1844726哎呀,對不起。 'class'是必需的,但我錯了。固定。 – hvd
我試圖實現你提出的「包裝」,但我無法弄清楚如何在我的代碼中引入它。你能舉一個例子來說明如何實現它嗎?它是在EDMX實體BlogPost中添加的標量屬性嗎?但是我不能重寫它。非常感謝你的幫助 –