快速业务通道

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

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

LINQ to SQL 实体类

只要使用了适当的属性 (attribute),LINQ to SQL允许你使用任何类去展现数据:

   1: [Table]
   2:  
   3: public class Customer
   4:  
   5: {
   6:  
   7:   [Column(IsPrimaryKey=true)]
   8:  
   9:   public int ID;
  10:  
  11:   [Column]
  12:  
  13:   public string Name;
  14:  
  15: }

[Table]属性存在于System.Data.Linq.Mapping命名空间中,它将会告诉LINQ to SQL此类型的一个对象实例代表数据库表中的一行.默认情况下,它假设表名和类名是一致,如果不一致,我们也可以使用下面的做法来完成映射:

[Table (Name=”Customers”)]

一个被标记了[Table]属性的类称为一个LINQ to SQL实体.它非常接近设置完全匹配数据库当中的表结构.

[Column]属性标记了一个映射到数据库列的字段或者属性. 如果列名和字段名或属性名不同, 我们也可以用以下的做法完成映射:

[Column Name=”FullName”]

public  string Name;

IsPrimaryKey属性指示该列是否是表中的主键列.为了维护对象的一致性以及更新和写回数据库, 它是必须的. 我们还可以定义公开属性去关联私有字段, 而不是直接定义共有字段,这样我们可以在属性访问器里面添加验证逻辑. 如果选择了这种方式, 你可以选择让LINQ to SQL在读取数据库数据的时候跳过属性访问器直接将数据写入字段:

   1: string _name;
   2:  
   3: [Column (Storage=“_name”)]
   4:  
   5: public string Name
   6:  
   7: { get { return _name; } set { _name =value; } }

[Column (Storage=”_name”)]指示LINQ to SQL直接将数据写入_name字段(而不是通过Name属性). 由于LINQ to SQL使用反射因此可以允许字段被定义为私有的.

DataContext

当你定义了实体类之后, 你可以通过实例化DataContext然后调用GetTable开始进行查询操作, 如下所示:

   1: var dc = new DataContext (“cx string…”);
   2:  
   3: Table customers = dc.GetTable ();
   4:  
   5: Customer cust = customers.OrderBy (c =>c.Name).First();
   6:  
   7: cust.Name = “the new name”;
   8:  
   9: dc.SubmitChanges();

一个DataContext对象会对它实例化的所有实体类进行追踪, 在其生命周期内, 一个DataContext永远都不会包含2个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号