動態 Entity Framework 查詢[勿用]
經過測試,此方法之所以可用,因為它用的是 IEnumerable 的擴展方法
它的是先把查詢號的數據放到內存后再進行篩選的,所以性能極低,差好幾個數量級~
所以,一般情況下,就不要用這個方法了
====================設想======================
首先說一下我想實現什么:
Entity Framework 可以說是一個很強大的DAL
但是BLL中很多方法是可以復用和共用的
比如:得到分頁列表
有人會說Linq to Entity(以下簡稱Linq)中有分頁功能~
但我更想把它做成一個函數,比如 Article.GetPage(1); <==得到文章的第一頁
而且這個函數還要共用,許多Model都需要用到這個函數
所以如何把常用方法寫成一個函數?然后讓符合條件的Model調用呢?
在T-SQL時代,這個很好解決,因為是拼接字符串,再加上c# 2.0中強大的泛型,可以很方便的實現以上功能(我已有一個成品,并應用在了一個項目中)
但是在Entity Framework中怎么用?
Entity Framework中的查詢不再是簡單的字符串拼接了(其實所謂簡單的字符串拼接反而帶來了很多麻煩)
所以如何實現?
======================嘗試========================
我先想到套用我原來的模式,利用泛型,但是卻遇到了問題,詳細的可以看一下博文
傳送門:http://space.cnblogs.com/question/12490/
有人給了我很好的回答,但是沒有解決問題,但就在剛才,一次偶然的嘗試,再加上那個回答,我想到了解決方案
===================小試牛刀=========================
class Program
{
static void Main(string[] args)
{
LegalAidEntities _db = new LegalAidEntities();
test<IUser>(_db.User);
Console.Read();
}
static public void test<T>(IEnumerable<T> e)
{
PropertyInfo pro = typeof(T).GetProperty("id");
var q = from IUser t in e
where t.id==1
select t;
Console.Write(q.ToList().Count);
}
}
public interface IUser
{
int id { get; set; }
}

浙公網安備 33010602011771號