我正在使用EF6 ObjectContext生成器,這意味着我們的實體從EntityObject繼承。實體框架:context.CreateObjectSet <T>派生實體問題
我想爲簡單的CRUD操作實現一個通用的存儲庫,但是當涉及派生實體時我遇到了一個特定的問題。儘管進行了許多不同的嘗試,但我無法獲得正確的代碼來處理這一般情況!
public DataRepository(ObjectContext context)
{
_context = context;
_objectSet = _context.CreateObjectSet<T>();
Type baseType = GetBaseEntityType();
if (baseType == typeof(T))
_objectSet = _context.CreateObjectSet<T>();
else
// how to create the objectset here?
// I have tried the below but it blows up at runtime with an invalid cast exception
_objectSet = (IObjectSet<T>)Activator.CreateInstance(typeof(ObjectSetProxy<,>).MakeGenericType(typeof(T), baseType), context);
}
我已經通過
Entity Framework: ObjectSet and its (generics) variance
閱讀但這似乎在得到一個的ObjectQuery而不是ObjectContext的成爲目標。任何幫助不勝感激。 :o)
更新:如果沒有任何干淨的解決方案,這是否有任何變通辦法人們可以想到的?我考慮了一個自動生成的派生實體列表,並對類型等進行了檢查,但由於它是一個通用的repo,因此它最終必須使用IObjectSet,所以下面的行無論如何都無法通過無效轉換_objectSet =(IObjectSet)_context.CreateObjectSet();
謝謝,但我已經閱讀過,並沒有幫助我出來恐怕。 –