Entity framework 基于完整对象的实体框架查询方法
如何在实体框架中实现以下查询方法, 下面是NHibernate文档中的一个片段Entity framework 基于完整对象的实体框架查询方法,entity-framework,linq-to-sql,entity-framework-4,linq-to-entities,entity-framework-4.1,Entity Framework,Linq To Sql,Entity Framework 4,Linq To Entities,Entity Framework 4.1,如何在实体框架中实现以下查询方法, 下面是NHibernate文档中的一个片段 实体框架是基于LINQ的。据说Linq是一种声明性语言,它的意思是告诉我们该做什么而不是如何做(命令式)。像这样的陈述 context.Orders.Select(o => o.OrderDate).Distinct(); 是一种声明性快捷方式,如果您愿意,用于“礼仪性”foreach语句,在该语句中,OrderDates如果以前未添加到列表中,则会添加到列表中 我不是NHibernate或其Criteria
实体框架是基于LINQ的。据说Linq是一种声明性语言,它的意思是告诉我们该做什么而不是如何做(命令式)。像这样的陈述
context.Orders.Select(o => o.OrderDate).Distinct();
是一种声明性快捷方式,如果您愿意,用于“礼仪性”foreach语句,在该语句中,OrderDate
s如果以前未添加到列表中,则会添加到列表中
我不是NHibernate或其CriteriaAPI的专家,但CriteriaAPI似乎比linq更具声明性。这使得比较它们很困难。一些不同之处:
- 主要的一点是:在EF中不可能通过示例进行查询
- 在linq中,无法为整个查询设置行为。例如,如果要排除零值属性,则必须在
谓词中指定它们中的每一个(这更接近于说明如何过滤)where
- EF中的病例敏感性完全不发达。例如,下面的语句
context.Orders.Select(o => o.OrderDate).Distinct();
将生成与相同的SQLPeople.Where(c=>string.Compare(c.Name,“z”,false)>0)
数据库排序规则确定字符串比较的大小写敏感度People.Where(c=>string.Compare(c.Name,“z”,true)>0)
- 您可以执行类似于的查询,但也可以为每个谓词指定:
(同样:案例中没有区别)People.Where(c=>c.Name.Contains(“a”))