快速业务通道

LINQ学习笔记:LINQ to SQL实体类

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-13

或者简单的使用:

   1: Console.WriteLine (dataContext.Customers.Count());

LINQ to SQL设计器会在合适的地方使用复数标识符,在这个例子中,它使用的是dataContext.Customers而不是dataContext.Customer – 虽然SQL Table和实体类名都是Customer.

关联

实体类生成工具还做了一项非常有用的工作,对于每一个在数据库中已经定义了的关系,生成工具都会在两边的实体类中自动生成对应的属性.例如,假设我们定义了一个客户和采购表的一对多的关系:

   1: create table Customer
   2:  
   3: (
   4:  
   5:   ID int not null primary key,
   6:  
   7:   Name varchar(30) not null
   8:  
   9: )
  10:  
  11: create table Purchase
  12:  
  13: (
  14:  
  15:   ID int not null primary key,
  16:  
  17:   CustomerID int references Customer (ID),
  18:  
  19:   Description varchar(30) not null,
  20:  
  21:   Price decimal not null
  22:  
  23: )

如果我们使用了自动生成的实体类的话,我们可以类似下面这样编写查询:

   1: var dataContext = new MyTypedDataContext (“connectionString”);
   2:  
   3: Customer cust1 = dataContext.Customers.OrderBy (c => c.Name).First();
   4:  
   5: foreach (Purchase p in cust1.Purchases)
   6:  
   7:          Console.WriteLine (p.Price);
   8:  
   9: Purchase cheapest = dataContext.Purchases.OrderBy (p => p.Price).First();
  10:  
  11: Customer cust2 = cheapest.Customer;

可以看到我们可以通过customer引用到purchase,同样也可以通过purchase引用到对应的customer. 并且如果cust1和cust2刚好指向的是同一条客户记录, cust1==cust2则会返回true.

现在让我们来查看一下Customer实体上自动生成的Purchases属性的标记:

   1: [Association (Storage=“_Purchases”,
   2:  
   3:              OtherKey=“CustomerID”)]
   4:  
   5: public EntitySet Purchases
   6:  
   7: { get {…} set {…}}

一个EntitySet类似是一个预定义的内置Where语句,用于查询关联的实体.[Association]属性提供了LINQ to SQL编写此查询所需的信息.和其他类型的查询一样,这个查询是延迟执行

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号