当前位置: 首页 > news >正文

LINQ to Sql系列一 增,删,改

首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明。

1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的。
2,LINQ to sql是LINQ在数据库数据访问方面的一个ORM框架。

了解完概念之后,我们就开始地学习LINQ to sql了,不过在正式利用LINQ to sql去进行数据的增,删,改,查之前,我们还有一些准备工作要做。

准备工作

1,创建数据库

创建数据库名为LinqtoSqlDemoDb,一共有四张表分别是Student学生表,Class班级表,Course课程表和StudentCourse学生课程表,如图:

l2s01

注意表与表之间的外键关系。

2,创建LINQ to classes文件

打开VS2010,创建一个类库工程命名为LinqtoSqlDemo.DAL,在工程上右键单击,选择“add--->add item”,在文件类型中选择“LINQ to classes”,命名为L2SDB.dbml,如图所示:

l2s02

3,根据数据库表自动生成代码

创建好LINQ to classes文件后,选择菜单“view--->server explorer”打开server explorer窗口,增加一个数据库连接。如图一

l2s03

展开tables开点,应该就能看到刚才创建的四张表,将它们选中然后拖到设计区,就会得到如图所示的样子。

l2s04

在设计窗口按F4键打开DataContext的属性窗口,我们需要给数据库上下文设定命名空间,如图。

l2s05

按ctrl+f5保存,这样我们的LINQ to sql 的ORM就创建好了。下面我们就可以开始数据的增,删,改的操作了。

代码如下:

public static void Add()
        {
            ClassInfo ci = new ClassInfo {  ClassName="class 1"};

            Console.WriteLine("---------------begin add a class");
            using (L2SDBDataContext db = new L2SDBDataContext())
            {
                TClass tc = new TClass();
                ClassValueCopier.Copy(tc, ci);
                //db.Log = Console.Out; //for output sql statement
                db.TClasses.InsertOnSubmit(tc);
                db.SubmitChanges();
            }
            Console.WriteLine("--------------end");
        }

代码如下:

public static void Delete(int id = 3)
        {
            Console.WriteLine("---------------begin delete a class");
            using (L2SDBDataContext db = new L2SDBDataContext())
            {
                //get the class by id
                TClass tc = db.TClasses.SingleOrDefault(p => p.ClassID == id);
                db.TClasses.DeleteOnSubmit(tc);
                db.SubmitChanges();    
            }
            Console.WriteLine("--------------end delete a student");
        }

代码如下:

public static void Edit(int id = 3)
        {
            Console.WriteLine("---------------begin edit a class");
            using (L2SDBDataContext db = new L2SDBDataContext())
            {
                //get the class by id
                TClass tc = db.TClasses.SingleOrDefault(p => p.ClassID == id);
                tc.ClassName = "class 1a";
                db.SubmitChanges();
            }
            Console.WriteLine("---------------end edit a class");
        }

总结:

1,首先我们必须得到DataContext对象,这个对象相当于一个数据库的GateWay,所有的操作都是通过它进行的。

2,LINQ to sql使用了“Unit of work”模式,所以,对数据库的操作不会立即提交到数据库,而是需要显式调用DataContext对象的SubmitChanges方法,所有改动才会被提交到数据库中。

转载于:https://www.cnblogs.com/mcgrady/archive/2013/05/26/3099783.html

相关文章:

  • [NET].NET Framework 3.5 SP1 真正的离线安装(转)
  • 访问共享目录C#访问共享目录与Word.ApplicationClass发生冲突的解决办法
  • C语言的库函数
  • 鼠标函数VC++全局钩子实现鼠标坐标值实时捕获
  • cut
  • 日志分析软件
  • cocos2d-x多分布率适配(iphone5、ipad、android)
  • 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决(转)
  • ASP.NET MVC 3.0(三): 初识MVC的Url映射潜规则Routing
  • C# 数据库删除操作错误报错 System.Data.SqlClient.SqlException (0x80131904)
  • vs2010的新特性(感悟var)
  • 动态规划方法之最长公共子序列
  • android19
  • 推荐系统的挑战(转载)
  • Android中获取IMEI码
  • Mysql优化
  • oschina
  • SQLServer之创建数据库快照
  • Web设计流程优化:网页效果图设计新思路
  • 如何选择开源的机器学习框架?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 浅谈sql中的in与not in,exists与not exists的区别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)bark-ml
  • (1)SpringCloud 整合Python
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)Controller接口控制器详解(三)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .naturalWidth 和naturalHeight属性,
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET 读取 JSON格式的数据
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET下ASPX编程的几个小问题
  • .Net中间语言BeforeFieldInit
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @Service注解让spring找到你的Service bean
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [04]Web前端进阶—JS伪数组
  • [AIGC codze] Kafka 的 rebalance 机制
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [C#基础]说说lock到底锁谁?
  • [c语言]小课堂 day2
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • [JAVA设计模式]第二部分:创建模式
  • [linux]centos7下解决yum install mysql-server没有可用包
  • [NOI2005]月下柠檬树[计算几何(simpson)]