动态 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; } }