实体关系:
实体类包含导航属性。通过导航属性,可以在数据模型间移动而不需要考虑外键关系。
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { NorthwindEntities db = new NorthwindEntities(); var result = from c in db.Customers let o = from q in c.Orders // let定义子查询的假名。 where (q.Employee.LastName != "King") select (q) where c.City == "London" && o.Count() > 5 select new { Name = c.CompanyName, Contact = c.ContactName, OrderCount = o.Count() }; GridView1.DataSource = result; GridView1.DataBind(); } } }
这个查询使用派生的ObjectContext类的Customers ObjectSet,并使用Orders导航属性查询每个
与Customer关联的所有Orders。我们使用Order 实体类型的Employee导航属性检查下了订单的员工的姓,并过滤掉姓不是"King"的数据。
查询的where子句使用Customer和Order实体类型的字段进行过滤,select子句创建一个新的匿名类型,以便从同一个类型中选择字段。
使用导航属性,不必为每个实体类创建单独的查询就可以在数据模型间导航。我们从Customers、Orders和Employees表获取了数据,但并不需要关系它们之间的关联关系。这比拆分查询以找到所有Orders的CustomerID具有和指定的Customer实例相同的值要好的多。
1.一对多关系
一对多关系的导航属性通过强类型的EntityCollection来处理。例如,Customer实体类和Order实体类具有一对多关系。为了从指定Customer实例关联到Order实例,需要使用Customer.Orders导航属性,它的类型是EntityCollection<Order>。针对某个关系选择合适记录的问题你不需要关心,它已经由外键关系处理了,因此选择某个用户的订单时,仅仅得到了那些CustomerID值和Customer的CustomerID属性值相同的Order实例。
使用SelectMany扩展方法进行LINQ to Entities查询,可以直接把EntityCollection类作为查询结果,它会在结果集合里包含所有匹配的结果。示例如下:
NorthwindEntities db = new NorthwindEntities(); IEnumerable<Order> orders = db.Customers .Where(c => c.CustomerID == "LAZYK") .SelectMany(c => c.Orders); GridView1.DataSource = orders; GridView1.DataBind();
2.一对一关系
对于一对一关系,有两个导航属性。第一个的名称是TReference,它返回的结果是EntityReference<T>,其中T是关联关系引用的实体类型,例如,Order实体类型有一个EmployeeReference的导航属性,它返回EntityReference<Employee>。第二个导航属性更有用,它的名字是T,T是它引用的实体类,例如,Order试题类型有一个Employee的方便的导航属性。
相关推荐
完整的linq to sql 学习笔记。
(英文版)WCF 4.0 Multi-tier Services Development with LINQ to Entities Packt Publishing 出版2010, PDF格式
Entity Framework技术系列之7:LINQ to Entities.pdf
linq to sql 语法 学习笔记
WCF 4.0 Multi-tier Services Development.with LINQ to Entities
Linq to entities的一个小例子,利用它可以很方便地完成数据库访问
Packtpub WCF 4.0 Multi tier Services Development with LINQ to Entities Jun.2010 关于WCF 4.0 和LINQ to Entity 的 新书 流行加时尚的编程利器
LINQ to SQL语句(2)之Select/Distinct LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg LINQ to SQL语句(4)之Join LINQ to SQL语句(5)之Order By LINQ to SQL语句(6)之Group By/Having LINQ to SQL语句(7)之Exists/In/...
实现linq多个查询条件连接功能(支持linq to sql 和linq to entity)。 按多个指定属性排序功能。 不同参数的lamdba表达式条件间的转换功能。
LINQ体验 LINQ To Sql学习文档
很实用的linq笔记 整理
LINQ TO SQL[1] 是包含在.NET Framework 3.5 版中的一种 O/RM 组件(对象关系映射),O/RM 允许你使用 .NET 的类来对关系数据库进行建模。然后,你可以使用LINQ对数据库中的数据进行查询、更新、添加、删除。 LINQ TO ...
linq基础 linq to sql linq基础 linq to sql
LINQ研究笔记,简单介绍在B/S技术三层框架下运用LINQ TO SQL数据连接技术,具体内容,自己研究好了。
LINQ To SQL实现分页效果源码 VS2008 Frameworks3.5 LINQ To SQL 实现分页效果 数据库SQL 2005
小小的心得,最近在学习linq,主要是linq to entitties方面的,主要是相关查询的一些注意。
Linq 大全 Linq To Sql Linq To DataSet Linq To Object Linq to Xml
Your Complete Example-Rich Guide to Using and Extending LINQ to Objects and PLINQ Using LINQ to Objects, .NET developers can write queries over object collections with the same deep functionality ...