LINQ基础 之 LINQ TO SQL (二)
配置LINQ TO SQL
首先添加一个Linq to sql文件,以.dbml结尾的文件。无法把表拖拽到.dbml文件中,提示“所选对象使用不支持的数据提供程序”
解决方案
在服务器资源管理器中右键单击连接,选择"修改连接",将数据源由"用于 OLE DB 的 .NET Framework 数据提供程序"
修改为"用于 SQL Server 的 .NET Framework 数据提供程序"即可:





var result = from c in db.Categorys select c 被编译器编译为:
Table<Category> table = db.GetTable<Category>();
var result = from c in table select c;
示例:
添加一个实体类Student.cs
添加命名空间:using System.Data.Linq.Mapping;
[Table(Name = "Student")]
public class Student
{
private int stu_Id;
[Column(IsPrimaryKey=true)]
public int Stu_Id
{
get { return stu_Id; }
set { stu_Id = value; }
}
private string stu_Name;
[Column]
public string Stu_Name
{
get { return stu_Name; }
set { stu_Name = value; }
}
private int cla_Id;
[Column]
public int Cla_Id
{
get { return cla_Id; }
set { cla_Id = value; }
}
}
添加WebForm1.aspx
添加命名空间:using System.Data.Linq;
protected void Page_Load(object sender, EventArgs e)
{
DataContext db = new DataContext("Data Source=.;Initial Catalog=Test;Integrated Security=SSPI;");
Table<Student> student= db.GetTable<Student>();
//var result = student.Where(s => s.Stu_Name == "zhangsan").Select(s => s);
var result = student.Select(s => s);
foreach (Student stu in result)
{
Response.Write("学号:" + stu.Stu_Id + " -- " + "姓名:" + stu.Stu_Name +"</br>");
}
}
显示:

二、连接数据库不在使用DataContext,而是创建一个类MSPetShop,然后继承DataContext


public MSPetShop(string connection) :base(connection);

三、表实体与数据库表映射

这是 Category实体类

这是Product实体类
3.1 在实体类中添加映射关系

这是Category实体类

这是Product实体类
3.2 两表联合查询


3.3 添加或修改数据


上图为修改数据

上图增加新增数据
示例:
创建一个实体 Class.cs 文件
[Table(Name = "Class")]
public class Class
{
private int class_Id; //班级号
[Column(IsPrimaryKey=true)]
public int Class_Id
{
get { return class_Id; }
set { class_Id = value; }
}
private string class_Name; //班级名称
[Column]
public string Class_Name
{
get { return class_Name; }
set { class_Name = value; }
} private EntitySet<Student> students;
[Association(Storage = "students",OtherKey = "Class_Id")]
public EntitySet<Student> Students
{
get { return this.students; }
set { this.students.Assign(value); }
}
}
添加实体类Student.cs
[Table(Name = "Student")]
public class Student
{
private int stu_Id; //学号
[Column(IsPrimaryKey=true)]
public int Stu_Id
{
get { return stu_Id; }
set { stu_Id = value; }
}
private string stu_Name; //学生姓名
[Column]
public string Stu_Name
{
get { return stu_Name; }
set { stu_Name = value; }
}
private int cla_Id; //班级号(外键)
[Column]
public int Cla_Id
{
get { return cla_Id; }
set { cla_Id = value; }
} private EntityRef<Class> classes;
[Association(Storage = "classes",ThisKey="Class_Id")]
public Class Classes
{
get { return this.classes.Entity; }
set { this.classes.Entity = value; }
}
}
添加Linq to sql文件,以.dbml结尾的文件

添加一个类MyDBContext.cs文件
public class MyDBContext :DataContext
{
public Table<Class> Class;
public Table<Student> Student;
public MyDBContext(string connection) : base(connection) { }
}
添加WebForm1.aspx
protected void Page_Load(object sender, EventArgs e)
{
MyDBContext db = new MyDBContext("Data Source=.;Initial Catalog=Test;Integrated Security=SSPI;");
var result = from c in db.Student
from s in c.Class
select s; foreach (var item in result)
{
Response.Write("学号:" + item.Student.Stu_Id + " -- " + "姓名:" + item.Student.Stu_Name + " -- " + "班级:" + item.Class_Name + "</br>");
}
}
结果:

LINQ基础 之 LINQ TO SQL (二)的更多相关文章
- C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法
连载目录 [已更新最新开发文章,点击查看详细] 介绍性的语言集成查询 (LINQ) 文档中的大多数查询是使用 LINQ 声明性查询语法编写的.但是在编译代码时,查询语法必须转换为针对 .NET ...
- C#3.0新增功能09 LINQ 基础02 LINQ 查询简介
连载目录 [已更新最新开发文章,点击查看详细] 查询 是一种从数据源检索数据的表达式. 查询通常用专门的查询语言来表示. 随着时间的推移,人们已经为各种数据源开发了不同的语言:例如,用于关系数据 ...
- C#3.0新增功能09 LINQ 基础06 LINQ 查询操作中的类型关系
连载目录 [已更新最新开发文章,点击查看详细] 若要有效编写查询,应了解完整的查询操作中的变量类型是如何全部彼此关联的. 如果了解这些关系,就能够更容易地理解文档中的 LINQ 示例和代码示例. ...
- C#3.0新增功能09 LINQ 基础03 LINQ 和泛型类型
连载目录 [已更新最新开发文章,点击查看详细] LINQ 查询基于 .NET Framework 版本 2.0 中引入的泛型类型. 无需深入了解泛型即可开始编写查询. 但是,可能需要了解 2 个 ...
- LINQ基础概述
介绍LINQ基础之前,首说一下LINQ 的历史和LINQ是什么,然后说一下学习 LINQ要了解的东西和 LINQ基础语法 LINQ 的历史 从语言方面的进化 –委托 –匿名方法 –Lambda表达 ...
- LINQ基础(二)
本文主要介绍LINQ查询操作符 LINQ查询为最常用的操作符定义了一个声明语法.还有许多查询操作符可用于Enumerable类. 下面的例子需要用到LINQ基础(一)(http://www.cnblo ...
- [.net 面向对象编程基础] (20) LINQ使用
[.net 面向对象编程基础] (20) LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...
- Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行.yield有得一拼,因为他们都是生成了一个枚举类. if (source is TSo ...
- [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...
随机推荐
- (转)HashMap分析
原文地址:http://www.cnblogs.com/ITtangtang/p/3948406.html HashMap的数据结构 HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快 ...
- VC++编译libpng
目录 第1章简介 1 第2章 Visual C++6.0 2 2.1 打开项目 2 2.2 编译宏 3 2.2.1 小结 5 第3章 Visual C++2010 ...
- 基于TBDS的flume异常问题排查过程
版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/214 来源:腾云阁 https://www.qclou ...
- linux笔记:用户管理命令和用户组管理命令
用户管理命令 命令名称:useradd功能:添加用户(添加完后不能立即使用,必须用passwd修改用户密码后才能使用)用法:useradd [选项] 用户名选项参数:-u 手工指定用户的UID-d 手 ...
- 在centos6.5中安装jdk
一.下载jdk 下载地址 www.oracle.com,我这次安装的jdk是1.6版本的,以.bin结尾的,名称为 jdk-6u45-linux-i586.bin 二.安装步骤 1.在 /usr目录下 ...
- java集合框架之java HashMap代码解析
java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...
- hdu 4034 Graph (floyd的深入理解)
Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submi ...
- hadoop入门之设置datanode的心跳时间的方法
做作业的过程中发现,把一节点停掉,dfsadmin和50070都无法马上感知到一个data node已经死掉 HDFS默认的超时时间为10分钟+30秒.这里暂且定义超时时间为timeout计算公式为: ...
- MATLAB实现矩阵分块相乘
要实现一下功能,这里$\bf{x}_i$为行向量 $${\bf{A}} = \left[ \begin{array}{l}{{\bf{x}}_1}\\{{\bf{x}}_2}\end{array} \ ...
- 10个必备的移动UI设计资源站(转)
创建移动设计模式是非常重要的一步,记住!这是为移动设备设计而不是web.不仅仅是移动屏幕远小于普通的电脑屏幕,关键是鼠标和键盘已经被手指替代了! 当然还有更重要的,说起来很苦逼,我们再也不能使用一种模 ...