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 ...
随机推荐
- 不能上传文件 unknown error happened
做一件事情: 1 找出问题,发现问题,2 搜索问题,3 找到答案,验证之.4 找不到答案,想出思路,验证....5 不断想,记录笔记.
- linux删除文件未释放空间问题处理
linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/ ...
- grep使用方法
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- 让页面滑动流畅得飞起的新特性:Passive Event Listeners
版权声明:本文由陈志兴原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/153 来源:腾云阁 https://www.qclo ...
- <mvc:annotation-driven />
<mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个 ...
- Java集合框架:HashMap
转载: Java集合框架:HashMap Java集合框架概述 Java集合框架无论是在工作.学习.面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以 ...
- JavaSE基础之this关键字的引用
1.0 this 指代当前对象, 在一般方法中可以通过this来引用当前对象的成员(方法,属性). 2.0 通过 this() 调 用重载的构造器,需要注意的是,通过此种方法调用的重载构造器 ...
- JSON Viewer
http://jsonviewer.codeplex.com/ jsoneditor https://github.com/josdejong/jsoneditor
- [转]JDK6和JDK7中的substring()方法
substring(int beginIndex, int endIndex)在JDK6与JDK7中的实现方式不一样,理解他们的差异有助于更好的使用它们.为了简单起见,下面所说的substring() ...
- cmd扩展路径
在命令行窗口中,输入for /? 即可得到如下参数解释==== 对一组文件中的每一个文件执行某个特定命令. FOR %variable IN (set) DO command [command-par ...