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

LINQ to SQL 中的DataContext方法及记录的存储
先给一段描述和一段代码,然后再提出我的疑问,希望大神路过看看提提意见,谢谢!

  LINQ to SQL
  DataContext成员方法:方法GetTable;
   
  方法原型:

  Table<T> GetTable<T>();

  方法GetTable在调用是只需要指定实体类型T即可,DataContext对象会根据指定的实体类信息来查询数据库中相应的物理 表,并将记录信息封装成实体类对象放入序列中返回。
  
以下是GetTable方法的使用示例:
 
C# code

1  string str_conn1 ="Data Source=localhost;Initial Catalog=DB_Student;User ID=sa;Password=king"; 
2             DataContext dc4 =new DataContext(str_conn1); 
3  
4             Table<Course> courses = dc4.GetTable<Course>();
5  
6             Console.WriteLine("可选课程:"); 
7 foreach (var c in courses.Select(s =>new {Cno=s.No,Cname=s.Name }).Take(3)) 
8             { 
9                 Console.WriteLine(c.ToString());
10            }
   

  问题1、这个Table<>是什么,它包含哪些方法、属性?
  问题2、“Table<Course> courses = dc4.GetTable<Course>();”我的理解是这个course是个物理表对应的实体类对象,他返回的是“记录信息”,可是记录可以有很多,但是实体类中保存记录的属性却只能存储一个记录,那么这些许多的记录是如何存储在实体类中的?
 

------解决方案--------------------
Table<Course>不是什么实体类,Course才是。

不要把一个实体数据枚举集合类说成是实体类。
------解决方案--------------------
探讨
先给一段描述和一段代码,然后再提出我的疑问,希望大神路过看看提提意见,谢谢!

LINQ to SQL
DataContext成员方法:方法GetTable;

方法原型:

Table<T> GetTable<T>();

方法GetTable在调用是只需要指定实体类型T即可,DataContext对象会根据指定的实体类信息来查询数据库中相应的……

------解决方案--------------------
这里不要和.NET的枚举类型(enum)混淆,最好叫做迭代器。

所谓迭代器就是一个提供了 Current()、MoveNext()(同时判断是否到达最后)、Reset()三个基本抽象操作的一种对象。