ALinq 入门学习(五)--插入数据

简介: Linq to SQL 的插入相对于ADO.NEt 来说是少了很多工作。ALinq 的插入和Linq to SQL 也非常相似。这几篇文章可能对于有些人来说是很肤浅的,如果懂Linq to SQL 的同仁来说,这些东西就是积分中的事情,因为这些东西基本一样,只需要注意一些小的细节即可。

Linq to SQL 的插入相对于ADO.NEt 来说是少了很多工作。ALinq 的插入和Linq to SQL 也非常相似。这几篇文章可能对于有些人来说是很肤浅的,如果懂Linq to SQL 的同仁来说,这些东西就是积分中的事情,因为这些东西基本一样,只需要注意一些小的细节即可。声明一次,如果有人觉得这文章很垃圾,请不要恶言相对,不留言即可。谢谢!!。希望博客园的还是以技术交流为主,不要有过多的口舌之争!!

 

1. 插入单行数据

  数据库表在实体设计器中会生成对应的实体对象,我们可以通过这些对象来操作代理操作数据库。

如果需要插入一行数据:new一个对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges()提交到数据库 , InsertOnSubmit()方法先将数据写入内存中,然后有SubmitChanges()统一提交持久化到数据库中。

img_405b18b4b6584ae338e0f6ecaf736533.gif ALinq 插入一行数据
 1  ///   <summary>
 2           ///  插入单个实体对象
 3           ///   </summary>
 4           public   void  FunctionInsEntity()
 5          {
 6              OA_DBDataContext context  =   new  OA_DBDataContext(connectionString);
 7              TabRole role  =   new  TabRole();
 8              role.Ext1  =   "" ;
 9              role.Ext2  =   "" ;
10              role.Ext3  =   "" ;
11              role.Ext4  =   "" ;
12              role.Ext5  =   "" ;
13              role.ISFobid  =   0 ;
14              role.Remark  =   " 查看权限 " ;
15              role.RoleName  =   " 查看权限 " ;
16              context.TabRole.InsertOnSubmit(role);
17 
18               // context.GetTable<TabRole>().InsertOnSubmit(role);
19              context.SubmitChanges();
20          }

 

上面代码中有一行被注释了的代码,这句代码也可以插入一个实体对象。当然如果两个同时使用,只能提交一行数据到数据库中。

 

2. 插入多行数据

有时候我们插入数据不仅仅是插入一行数据,如果在对同一个表插入数据的时候有多行数据插入,我们每连接一次数据库然后插入一行数据,这样对于性能是一个极大的损耗,上面的提到过了, InsertOnSubmit() 可以先将数据存储到内存中 然后统一提交到数据。

img_405b18b4b6584ae338e0f6ecaf736533.gif ALinq 插入多行数据
 1  ///   <summary>
 2           ///  插入多个实体对象
 3           ///   </summary>
 4           public   void  FunctionInsmanyEntity()
 5          {
 6              OA_DBDataContext context  =   new  OA_DBDataContext(connectionString);
 7              IList < TabRole >  list  =   new  List < TabRole > ();
 8               for  ( int  i  =   0 ; i  <   5 ; i ++ )
 9              {
10                  TabRole role  =   new  TabRole();
11                  role.Ext1  =  (i  +   1 ).ToString();
12                  role.Ext2  =  (i  +   2 ).ToString();
13                  role.Ext3  =  (i  +   3 ).ToString();
14                  role.Ext4  =  (i  +   4 ).ToString();
15                  role.Ext5  =  (i  +   5 ).ToString();
16                  role.ISFobid  =  i  %   2   ==   0   ?   0  :  1 ;
17                  role.Remark  =   " 查看权限 "   +  i;
18                  role.RoleName  =   " 查看权限 "   +  i;
19                  list.Add(role);
20              }
21              context.TabRole.InsertAllOnSubmit(list);
22              context.SubmitChanges();
23          }

 

这个方法中 创建了5个对象,使用InsertAllOnSubmit() 方法将5个对象同时保存到内存中,这个方式和上面InsertOnSubmit()方法作用相同,只是保存的是一个集合。最后也是使用SubmitChanges()提交到数据库。

 

3.级联插入数据

 在数据库中存在两个主外键关系的表,我们使用实体设计器建立实体关系,并生产相应的实体对象。我们需要的操作是,当插入子表数据的时候,同时指定主键表的实体,而这个实体本身也是要新建的。也就是说要先生成一个逐渐表ID,然后再插入到子表中(外见表).这个操作在Linq to SQL 中是可以行的,但是在ALinq 中好像不行。这个问题可能是我本人还没有了解清楚,不过这里先介绍一下ALinq 中的用法,之后我去找ALinq 的作者了解一下情况然后补充。

img_405b18b4b6584ae338e0f6ecaf736533.gif Linq to SQL 级联插入数据
 1  ///   <summary>
 2           ///  插入有关联关系的实体
 3           ///   </summary>
 4           public   void  FunctionInsRelaEntity()
 5          {
 6              OA_DBDataContext context  =   new  OA_DBDataContext(connectionString);
 7              TabRole role  =   new  TabRole();
 8              role.Ext1  =   "" ;
 9              role.Ext2  =   "" ;
10              role.Ext3  =   "" ;
11              role.Ext4  =   "" ;
12              role.Ext5  =   "" ;
13              role.ISFobid  =   0 ;
14              role.Remark  =   " 级联关系 " ;
15              role.RoleName  =   " 级联关系 " ;
16 
17              TabUser user  =   new  TabUser
18              {
19                  Address  =   " 上海 " ,
20                  Age  =   23 ,
21                  Birthday  =  DateTime.Now,
22                  CardID  =   " 421022195905303919 " ,
23                  Descript  =   "" ,
24                  Ext1  =   "" ,
25                  Ext2  =   "" ,
26                  Ext3  =   "" ,
27                  Ext4  =   "" ,
28                  Ext5  =   "" ,
29                  ISFobid  =   0 ,
30                  RoleId  =   1 ,
31                  IsMarried  =   0 ,
32                  PassWord  =   " sdfsdf " ,
33                  Remark  =   " 备注 " ,
34                  Sex  =   0 ,
35                  TabRole  =  role,
36                  UserName  =   " sdfsdf "
37              };
38              context.TabUser.InsertOnSubmit(user);
39              context.SubmitChanges();
40          }
41 

 

 

4.动态操作数据

在java Hibernate 中有个方法很不错,那就是当数据存在主键值对应的数据时就修改,如果没有就增加一行数据。Linq to SQL 也支持这个操作,但是ALinq 又好像不支持,说到这里感觉ALinq 还是有很多弊端的,不过这些都不影响我们使用,一般使用这种操作都很少的,我们可以使用其他的方式来替代。下面看看Linq to SQL 中的动态修改数据方法。

img_405b18b4b6584ae338e0f6ecaf736533.gif Linq to SQL 动态修改数据
 1  ///   <summary>
 2           ///  重写数据
 3           ///   </summary>
 4           public   void  FunctionOverrideData()
 5          {
 6              OA_DBDataContext context  =   new  OA_DBDataContext(connectionString);
 7              TabRole role  =   new  TabRole
 8              {
 9                  Ext1  =   " ddd " ,
10                  Ext2  =   " ddd " ,
11                  Ext3  =   " ddd " ,
12                  Ext4  =   " ddd " ,
13                  Ext5  =   " ddd " ,
14                  ISFobid  =   0 ,
15                  Remark  =   " 级联关系 " ,
16                  RoleName  =   " 级联关系 " ,
17                  Id  =   2
18              };
19              context.TabRole.InsertOnSubmit(role);
20              context.SubmitChanges();
21          }

 

 

相关文章
|
1月前
|
关系型数据库 MySQL
Mysql基础第二十二天,插入数据
Mysql基础第二十二天,插入数据
17 0
|
10月前
|
SQL 关系型数据库 MySQL
MySQL查询进阶——从函数到表连接的使用你还记得吗
MySQL查询进阶——从函数到表连接的使用你还记得吗
84 0
|
存储 关系型数据库 数据库
第三章《数据表的基本操作》
第三章《数据表的基本操作》
第三章《数据表的基本操作》
|
SQL 数据库
INSERT 插入语句 零基础自学SQL课程系列Day8
今天是SQL教程的第八课。 这节课讲讲 INSERT插入语句,用来像数据库中添加数据。 基本语法:
114 0
INSERT 插入语句 零基础自学SQL课程系列Day8
|
SQL 数据库 Python
零基础自学SQL课程 | DELETE 删除语句
今天是SQL课程的第十课。 讲讲DELETE 删除语句,用来删除表中的一条或多条记录。 基本语法:
148 0
零基础自学SQL课程 | DELETE 删除语句
|
SQL 存储 数据库
面试官提问:如何通过sql方式将数据库表行转列?
在刚进入 IT 行业的第一年换工作的时候,至今让我印象最深刻的有一个这样的面试题:如何通过 SQL 方式将数据库的行转列? 当时的面试官让我现场写 SQL,信心满满的我,我觉得我可以做出来,然后10分支、20分钟、30分钟...过去了,很遗憾一点动静都没有。 最后的我不得不服,结局相信大家也能猜到是啥了!💔
面试官提问:如何通过sql方式将数据库表行转列?
|
C语言
【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )
【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )
149 0
【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )
|
SQL .NET 数据库
ALinq 入门学习(三)--Where 条件查询
ALinq 中的Where条件查询和 Linq to SQL 中的Where条件查询是一样的操作方式。其作用也就是过滤查询。   1. ALinq 的简单查询 ALinq 的简单查询  1 public void Function() 2         { 3             OA_D...
1078 0
|
SQL 存储 数据可视化
ALinq 入门学习(八)--ALinq 对Vs2010 的支持
1.       ALinq FOR  VS2010 简介 之前写过一些关于ALinq 的相关文章,详细请参考如下:     ALinq 入门学习(一)--ALinq简介     ALinq 入门学习(二)--DataContext     ALinq 入门学习(三)--Where 条件...
1248 0
|
SQL .NET
ALinq 入门学习(四)--查询关键字
在SQL查询中对应着各种各样的查询关键字,如果distinct,count,sum 等等一些关键字。在Linq to SQL 中对这些关键字的使用做了封装,同样在ALinq 中也有相同的操作函数。   1.
1006 0

热门文章

最新文章

相关实验场景

更多