2011-11-23 16 views
0

在我DAL的RepositoryBase中,我有下面的代碼...我似乎無法弄清楚ObjectQuery query = ObjectSet; ?我關門了嗎?EF ObjectQuery <T> query = ObjectSet;如此接近

public IEnumerable<T> QueryObjectGraph(Expression<Func<T, bool>> filter, params string[] children) 
    { 
     //ObjectQuery<T> query = ObjectSet; //nope...requires 1 type argument 
     //ObjectQuery<T> query = ObjectSet<T>; //nope......type used like variable 
     // ObjectQuery<T> query = ObjectSet<T>(); //nope ...type used like variable 
     //ObjectQuery<T> query = new ObjectSet<T>(); //nope...no constructors defined 
     IQueryable<T> query; 

     foreach (var child in children) 
     { 
      query = query.Include(child); 
     } 

     return query.Where(filter); 
    } 
+0

你想實現什麼?你應該查詢已經實例化的ObjectSet而不是創建它。 –

+0

..和「你想達到什麼?」...看看簽名...看,我包括子表和應用過濾器。所有這些都在通用的存儲庫中。 – Bryant

+0

這似乎不會拋出錯誤......如果有助於任何公衆T獲取(表達式<0121)其中 { return dbset.Where(where).FirstOrDefault (); } 公共的IEnumerable QueryObjectGraph(表達式>過濾器,則params串[]兒童) { 的foreach(兒童VAR兒童) { dbset.Include(子); } return dbset.Where(filter); } – Bryant

回答

3

讓人冷靜下來。不意味着聽起來粗魯。你只是不知道你在做什麼。如果你看這裏http://msdn.microsoft.com/en-us/library/dd412719.aspx你會發現ObjectSet是ObjectQuery,所以賦值工作。但是你必須先創建ObjectSet!

「因爲我是專家」

看看這個驚人的代碼工作

using (var ctx = new ModelContainer()) 
{ 
    ObjectQuery<Person> objectQuery = ctx.People; 
} 

和ctx.People的類型爲對象集

什麼是你的代碼的ObjectSet註釋掉?它在哪裏創建?

+0

如果我知道100%我在做什麼,我不會在這裏問一個問題。我會自己照顧它。 – Bryant

+0

如果您發現它在引號中。我不認爲自己是EF的專家。希望我是!但評論代碼與EF無關。爲了使用object(ObjectSet),你必須先創建它。這些是編程的基礎。評論代碼表明您缺乏任何編程語言的基本知識。 –

+0

你的問題與EF無關。但你不明白。 –

相關問題