linq 初步认识
linq to sql 类
介绍:
linq如果不能用的话 重装一下vs就好了
LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
是一种高集成化的数据库访问技术。
他与ado.net区别就是 ado.net是最基础的 linq是最高级的;
实用linq 不会用数据库,sql语句不会写也可以访问数据库;
改变的是数据访问层;
实用:
先做一个table 共7列,再放一个Repeater循环绑定

准备工作完成后,在解决方案里新建项,找到linq to sql
文件格式是.dbml
命名使默认名不懂,想要操作那个数据库就把数据库名写在前面。
创建时提示这个类必须放在名为app_code的文件夹里,确认自动添加;
创建完成来到这个界面,点击这个资源管理器,

左边会出现一个窗口,点击带+号的那个按钮

然后会在弹出一个窗口,填写数据库信息,选择的时候就会发现只能选择一个库。如果用户名和密码填写错误是连不上数据库的

连接之后何在数据库里是一样的列表。创建实体类只需要把你需要的那个表拖到空白区域就可以了。他还会显示出表之间的外键关系
建好的类就是这样,实体类在.cs里面,这里面的东西不要改,没有情况会让你改这里面的内容。
在里面找到了成员变量,这里有个partial 代表这是类的一部分,所以可以属性拓展;
接下来创建数据访问类:
创建一个类,类名与表明一致;
在类里面输入linq的名称,实例化出来;

这个东西叫做 数据库上下文;
写一个方法

这样就完成了对数据库users表的所有数据查询, 通过数据库上下文con找到users表 转换成list格式,放到ulist里面,在return出去。
更简单的也可以直接在后台里面这样写:

using是编写一个作用域,小括号后面创建一个对象,是一种很好用的对象销毁的方式。
这里创建的对象con只能在花括号里面用,走完花括号就会销毁掉。

数据拓展
属性拓展不能写在linq的.cs文件里,因为只要linq类稍微有一点变化,哪怕是表移动了一点,他就会刷新数据。

这里的类型是bool?型,还有其他?型,他和bool型区别就是一个可以为null一个不可以;
实用的时候必须吧?型装换成普通类型;
所以属性拓展要再建一个类,类名必须与表明一制。记得加上partial , 里面再写属性拓展就可以了。要return的属性通过下划线可以点出来。

如果是有外键关系的表可以直接点出来。
添加数据
准备几个textbox和一个按钮

后台 按钮的点击事件
添加数据当然还是用数据库上下文,

添加数据要用这两句,第一句con.Users.InsertOnSubmit(u) 是一个添加数据方法,括号内添加一个users类型的数据,但只是准备添加,第二句con.SubmitChanges();才是完成修改。添加数据。
删除数据
删除需要新建一个web,后台接收一下传递过来的ids。
根据这个ids查询出对应的对象,删除这个对象;
然后弹出一个提示,告诉用户删除了没。
返回页面;
这里就需要ambda表达式;
Users u = con.Users.where( r => r.ids.Tostring() == 接收的id ).FirstOrDefault();
这就是基本格式,r可以换成任意字母, =>就是基本格式 r点 就可以出现每一列的名,然后判断(转换格式);
查询出来是个集合 取值用.FirstOrDelault() 第一条或者[不存在,不执行,为空]
if(u != null)
{
con.Users.DeleteOnSubmit(u);绑定需要删除的对象
con.SubmitChanges();修改
}
修改数据
using (UsersDataClassesDataContext con = new UsersDataClassesDataContext())
{ Users u = con.Users.Where(r => r.Ids.ToString() == st).FirstOrDefault(); if (u != null)
{
if (p1.Text.Length > 0)
u.Password = p1.Text; u.Nickname = TextBox2.Text;
u.Sex = RadioButtonList1.Items[0].Selected;
u.Birthday = Convert.ToDateTime(Text_Bir.Text);
u.Nation = Dr4.SelectedValue; con.SubmitChanges(); Response.Write("<script>alert('修改成功!')</script>");
Response.Redirect("zhanshi.aspx"); } }
- con.SubmitChanges();
各修改数据准备过程就是准备修改过程,不用再用上下文对象来准备。直接一把提交
再重复一下
使用Linq时要注意:
1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动,需要重新保存.
2.属性拓展的使用:添加一个新的类,不要在dbml中添加属性拓展,一旦数据库变动,属性拓展类就会失效.
3.使用Linq获取的数据都是?int,?string等?数据类型,意思是也有可能为空,这时候操作数据需要先把数据类型转化成int,string等数据类型.
在这里操作数据库用到了lambda表达式,是一种匿名函数,使用lambda表达式自动带有防攻击,不需要在使用parameter了.
linq 初步认识的更多相关文章
- LINQ 初步了解
.NET Framework 3.5的新特性 Language Integrated Query,即语言集成查询 查询 和语言结合关系数据库里的信息使用的XML文档保存在本地的DataSet内存中的L ...
- LinQ的初步学习与总结
嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...
- LinQ实战学习笔记(一) LINQ to (Objects, XML, SQL) 入门初步
LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在CSDN看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨 ...
- Linq之Lambda表达式初步认识
目录 写在前面 匿名方法 一个例子 Lambda 定义 一个例子 总结 参考文章 写在前面 元旦三天在家闲着无事,就看了看Linq的相关内容,也准备系统的学习一下,作为学习Linq的前奏,还是先得说说 ...
- linq读书笔记1-linq 初步
至于linq是什么之类的已经有过太多的文章介绍,亦不清楚的胡朋友可以自己搜索一下便可以得到大量的答案 为了体验linq究竟能带给我们什么体验,我们直接从代码入手: string[] words = n ...
- C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成
LINQ是一种集成在计算机语言里的信息查询语句,是c#3.0中最惹人瞩目的功能. 在C#中,LINQ语句有两种写法. 第一种写法与SQL语句类似: IEnumerable<Customer> ...
- LINQ TO XML初步了解
最近简单的学习了一下LINT TO XML,写篇博客在这,方便以后查看~~ 1.常用到的类 XmlDocument -- 文档(xml文件) XmlElement -- ...
- [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)
[入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date 周六 10 一月 2015 By 钟谢伟 Category website develop ...
- 小型单文件NoSQL数据库SharpFileDB初步实现
小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...
随机推荐
- Struts2(2)
一.分模块开发:单独写模块的配置文件,把配置文件引入到核心配置文件中 Aaction的单独配置文件如下 <?xml version="1.0" encoding=" ...
- ps6-工具的基础使用
1.图像的移动与对齐 ctrl+j:复制图层,然后再移动不损坏原来的图像. Ctrl+Z =返回键 Shift+单击最下方图层 选择全部 Alt+鼠标移动 复制并粘贴 2.规则选择工具组 shift键 ...
- 14_ Component 游戏开发组件模式
# component 不同作用的程序需要保持互相隔离 我们不想ai 物理 渲染 声音 等等功能 耦合在一起,像下面这样 ``` //bad if (collidingWithFloor() & ...
- php 与 Smarty 中的 isset
今天在做一个分页模块的时候,在获取前端返回的当前页时,烦了一个大错!本来应该是这样子滴: 而咱却写成了这个样子: 在php里输出测试都没错,结果到Smarty里就被拒了! 测试结果是 这货跟谁都相等, ...
- Java 参数的和
public class CommandParamter { public static void main(String[] args) { // TODO Auto-generated metho ...
- 团队队列(列和map结合的经典运用)
Queues and Priority Queues are data structures which are known to most computer scientists. The Team ...
- mapreduce-实现多表关联
//map package hadoop3; import java.io.IOException; import org.apache.hadoop.io.LongWritable;import o ...
- 修改git commit 最后一次提交的注释信息 以及如何退出git bash vim编辑器
https://www.cnblogs.com/sandy-happyhour/p/5950084.html 今天用git commit -m “注释”提交的时候,注释写错了,于是各种查资料开始了和g ...
- 使用.NET中的XML注释(二) -- 创建帮助文档入门篇
一.摘要 在本系列的第一篇文章介绍了.NET中XML注释的用途, 本篇文章将讲解如何使用XML注释生成与MSDN一样的帮助文件.主要介绍NDoc的继承者:SandCastle. 二.背景 要生成帮助文 ...
- 非maven项目下载maven的jar
很多时候我们需要jar,可惜项目不是maven的,但是我们只有一个maven的坐标,那怎么办? 比如: <dependencies> <dependency> <grou ...