首先搞清楚,IQueryable只是一个接口而已。它本身一没有查询数据的能力,二没有存储数据的能力。 ------解决方案-------------------- 明白你的意思。照你的意思来就是Entity Framework的Entity Data Model(EDM)了。 ------解决方案-------------------- Entity Framework的目的就是与数据存储无关的方式去编程,也就是所谓的Persistence Ignorance.
Entity Framework的Entity Data Model就是个Model,这个Model可以和数据库表结构1:1,也可以完全不一样,不止是字段名自定义问题,而是表面上看起来和数据库表结构完全两样,支持继承,Navigation Property等等数据库里没用对应物的一种结构,通过这个结构(Model),帮你生成业务对象(EntityObject),业务集合(ObjectSet<T>)等。当你编程时只针对EDM帮你生成的对象,(相对的)无需关心数据存取方面。让你从建立数据库建接,再把读取的record转换成业务对象,填充进集合的这种方式里解脱出来……
我认为这里最最关键的是赶紧去找表达式树(Expressoin Tree)相关的资料补一下。这个‘简单的’知识点没过关,一切都扯淡!后面什么都没用。 ------解决方案-------------------- from type in context.TB_PM_PRODUCT_TYPE where type.TYPE_FID == a select type;
你认为它是在查询数据库吗?可以这么说,也可以说不是这样子的。它是在查询Model,这个from …… in Context.……句子本身的表达意思是查询Model,而不是数据库。是支持EF的.net Provider在帮你把它转换成SQL语句,取得数据后再封装进Entity Object集合再返回给你(而这个过程你“看”不到)。在EF的世界里,查询的结果默认就是EntityObject派生的对象的集合:ObjectSet<T>.