2012-11-30 26 views
0

嘗試對錶執行反射調用並調用where方法。 在MVC(2)中使用,實體框架反射調用表的方法,mvc c#

實體框架中的數據。可以硬編碼當前兩個表,即時試圖從數據輸出。

麻煩在如何調用where方法。

而只是感到驚訝,我沒有找到答案已經?所以如果已經回答了,而且沒有找到正確的東西,我確定你會讓我知道。

具有以下

string search_table 

PropertyInfo prop = database.GetType().GetProperty(search_table); 
object table = prop.GetValue(WRG,null); 
var methods = table.GetType().GetMethods(); 

var where_method = table.GetType().GetMethod("Where"); 
var result_data = where_method.Invoke(table, new object[]{"table", "table.-FIELD-NAME.Contains(search_string)"}); 

如果不使用反射,那麼我會調用其中方法與 VAR result_data = database.-TABEL-。凡(T => T.-FIELD.Contains(search_string的));

所以試圖將這些信息複製到調用中,沒有任何結果。

其中調用請求:(obj對象,對象[]參數)

謝謝你的人指着我在正確的方向。

回答

0

Whereextension method,通常在System.Linq.QueryableSystem.Linq.Enumerable類中定義的,這取決於物體是否實現IQueryable

Enumerable版本期望Func<T, bool>參數。 Queryable版本需要Expression<Func<T, bool>>參數。這兩個版本都不接受參數的字符串表示。如果您需要將參數作爲字符串傳遞,則需要查看LINQ Dynamic Query library

+0

對,我現在明白這一點。基本上不能反映地使用,因爲它不會指向由實體框架所做的正確的Where方法聲明,而只能指向抽象方法聲明。 – Maze