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 ...
随机推荐
- AlphaGo实现原理
AlphaGo已经打败了李世石9段,如果你也懂它背后的原理,或许某一天你也可以开发出一款AI来打败dota或者LOL的世界冠军. Mastering the game of Go with deep ...
- [转]Android_气泡效果
最近在看以前在eoe上收藏的一些源代码,准备将这些代码加上一些自己的注释,然后贴出来,方便自己日后查阅,和刚入门的人来学习. 今天先看一个气泡窗口,先看一下效果图和目录结构,然后再上代码 通过第一幅图 ...
- MFC Socket
目录 第1章同步TCP通讯 1 1.1 同步通讯与异步通讯 1 1.2 同步通讯类 1 1.3 同步TCP通讯客户端 4 1.3.1 界面 4 1.3.2 界面类声明 ...
- 串行通讯之UARTLoopback
目录 第1章串行通讯之UARTLoopback 2 1 USB转串口 2 2 USB Accessory 2 3 连入手机 3 4 代码改进 4 5 打开串口 4 ...
- 【bzoj3625】【xsy1729】小朋友和二叉树
[bzoj3625]小朋友与二叉树 题意 我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树. 考虑一个含有n个互异正整数的序列c[1],c[2],...,c[n].如果一棵带点权的有根二叉树满足其所有 ...
- sina 行情api
http://blog.csdn.net/simon803/article/details/7784682
- 杂谈:Servlet(2)
Servlet的方法剖析: 1.service()方法里面做了什么? 2.doGet()与doPost()做了什么?应该怎么写? 回答 1.service()方法里面做了什么? 如果你的service ...
- 玩转linux文件(重点)
一.几个主要的操作 mkdir—创建目录 cp—复制文件和目录 mv——移动/重命名文件和目录 rm——删除文件和目录 ln——创建硬链接和软链接 二.几个考点: 通配符 硬链接和软链接(符号链接) ...
- javaScript内置类Date,Math等
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> & ...
- struts2视频学习笔记 09-10(struts2处理流程,指定多个struts配置文件)
课时9 Struts2的处理流程 StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url- ...