日期:2014-05-18  浏览次数:21055 次

LINQ to SQL之DataContext的方法GetTable问题
叙述:
  GetTable 原型:Table<T> GetTable<T>.
  应用:方法GetTable在调用时只需要指定实体类型 T 即可,
  DataContext对象会根据指定的 实体类信息 来查询
  数据库中相应的物理表,
  并将 记录信息 封装成实体类对象放入序列中返回。




问题:
  1、如何将 记录信息 封装成实体类对象?
  (如下面实际的实体类所示,实体类中并没有存储表记录的字段,如何将记录信息返回?)
  2、序列是什么?
   
  [Table(Name="dbo.部门表")]
public partial class 部门表 : INotifyPropertyChanging, INotifyPropertyChanged
  {
  private string _部门编号;
private string _部门名称;
private string _部门负责人;
private string _备注;
   
  //以下是各个字段的属性
  [Column(Storage="_部门编号", DbType="VarChar(10) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
public string 部门编号{ }
  ......
  }
 

------解决方案--------------------
1.GetTable的实体序列是自动产生的,
你可以通过GetTable<类型>()获取 该类型的全部数据

什么是类型呢?简单说就是你数据表的名字

在这里是你的“部门表”

2序列:Ienumerable

你可以把它想象成没有索引集合,用foreach遍历
------解决方案--------------------
探讨
引用:
(1)部门表,这个名字使用的不好,具有迷惑性,其实应该命名成部门信息。

其实每一个这样的对象对应的是一条记录,而不是一个表。

(2)序列你可以视作集合。


既然每调用一次GetTable<T>方法,就将一条记录封装在实体类对象中,那么一个表中有多条记录啊,那么其他的所有记录都保存在哪里呢