Table<TEntity>表示表格记录,它是一个泛型集合类,它的元素就是表格实体对象。它提供一组方法,对元素进行添加删除操作,并可以通过DataContext将这些操作保存到数据库。

表还是前面的那张表,在项目中添加了一个LINQ to SQL类。重点是InsertOnSubmit、DeleteOnSubmit等方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LINQ_to_SQL_Table
{
   /// <summary>
   /// 操作单一表格的Table<TEntity>类
   /// </summary>
   class Program
   {
       static void Main(string[] args)
       {
           //1.a.Attach附加实体
           DataClasses1DataContext dc1 = new DataClasses1DataContext();
           tb_GuestInfo guset = new tb_GuestInfo() { Id=1, Name = "DebugLZQ", Age = 35, Tel = "138****8888" };

dc1.tb_GuestInfo.Attach(guset);//这样的Attach仅仅附加实体,数据库没有更新
           dc1.SubmitChanges();
           //显示附加成功
           foreach (var g in dc1.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("---------");
           //显示数据库没有更新
           DataClasses1DataContext dc2 = new DataClasses1DataContext();
           foreach (var g in dc2.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("------------------------");
           Console.ReadKey();

//2.InsertOnSubmit
           dc2.tb_GuestInfo.InsertOnSubmit(guset);
           dc2.SubmitChanges();

foreach (var g in dc2.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("------------------------");
           Console.ReadKey();
           //2b.InsertAllOnSubmit 插入集合
           List<tb_GuestInfo> lst = new List<tb_GuestInfo>()
           {
               new tb_GuestInfo(){ Name="AA", Age=25,Tel="133****3333"},
               new tb_GuestInfo(){ Name="BB", Age=25,Tel="135****5555"}
           };
           dc2.tb_GuestInfo.InsertAllOnSubmit(lst);
           dc2.SubmitChanges();

foreach (var g in dc2.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("------------------------");
           Console.ReadKey();
           //
           //3.DeleteOnSubmit
           tb_GuestInfo entity = (from g in dc2.tb_GuestInfo
                                  where g.Name == "AA"
                                  select g).Single();
           dc2.tb_GuestInfo.DeleteOnSubmit(entity);//
           dc2.SubmitChanges();

foreach (var g in dc2.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("------------------------");
           Console.ReadKey();
           //3b.DeleteAllOnSubmit
           IEnumerable<tb_GuestInfo> entitys = from g in dc2.tb_GuestInfo
                                               where g.Name == "AA" || g.Name == "BB"
                                               select g;
           dc2.tb_GuestInfo.DeleteAllOnSubmit(entitys);
           dc2.SubmitChanges();

foreach (var g in dc2.tb_GuestInfo)
           {
               Console.WriteLine("{0} {1} {2} {3}", g.Id, g.Name, g.Age, g.Tel);
           }
           Console.WriteLine("------------------------");
           Console.ReadKey();          
           
       }
   }
}

程序运行结果如下:

C#→关于System.Data.Linq下的Table<TEntity> 泛型类 的问题的更多相关文章

  1. 类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。

    解决方法:添加System.Data.Linq.dll引用 http://www.cnblogs.com/m84641693/archive/2010/07/26/1785100.html http: ...

  2. ASP.NET#命名空间"System.Data"中不存在类型或命名空间名称"Linq"(是否缺少程序集引用?)

    添加完.dbml(LINQ to SQL类文件)文件后,双击.designer.cs源文件时,发现编译器提示:命名空间"System.Data"中不存在类型或命名空间名称" ...

  3. 没有安装提供程序“System.Data.SqlServerCe.3.5”的解决方法

    在Windows 8.1系统下运行带数据库功能的应用,报错并提示:“System.InvalidOperationException”类型的未经处理的异常在 System.Data.Linq.dll ...

  4. Dynamic Data linq to SQL Web Application

    微软提供了一个数据驱动网站模板,可以自动生成CRUD页面,使用过程中碰到些问题 1.首先是如何应用,只需要创建个context并且在Global.asax里面加入下面这一句就可以了 DefaultMo ...

  5. .net core linux环境下 System.Data.SqlClient.SqlException: Connection Timeout Expired.

    最近遇到了一个很奇葩的问题,我编写了一个.net core程序读取多个数据库数据源,进行数据同步处理.该程序在windows环境下运行完全正常,但在linux环境下运行报异常,提示 System.Da ...

  6. 微軟将从 .NET 4 以后的版本弃用 System.Data.OracleClient 以及Oracle 的各种连接方法

    这是微软官方 ADO.NET Team Blog 去年就公布的消息: http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracl ...

  7. (转)Combobox出现System.Data.DataRowView的原因,以及指定ValueMember的时机问题

    原文地址 http://blog.csdn.net/lubiaopan/article/details/5915774 当使用Combobox控件时,出现SelectedValue的值为“System ...

  8. C# 封装 System.Data.SQLite

    参考1: 关于如何使用System.Data.SQLite的入门: http://www.dreamincode.net/forums/topic/157830-using-sqlite-with-c ...

  9. SQLite 之 C#版 System.Data.SQLite 使用

    简介 SQLite简介 SQLite,是一款轻型的关系型数据库.它的设计目标是嵌入式. 它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 C++.C ...

随机推荐

  1. sql server和oracle的差异

    .部分SQL语句差异 (1)SQL:select top 10 * from table     ORA: select * from table where rownum<11(2)SQL:S ...

  2. 深入分析:Android中app之间的交互(二,使用ComponentName)

    在前一篇相关主题的博文中我们了解了如何使用Action来启动当前应用之外的Activity处理我们的业务逻辑,在本篇笔记中我在简单介绍一下使用ComponentName来与当前应用之外的应用进行交互. ...

  3. js 微信分享

    一. //js接口 var shareme; var urls = window.location.href; if(isWeiXin()){   var weifileref=document.cr ...

  4. iOS 调用地图导航

    在IOS6.0系统后,兼容iOS5.0与iOS6.0地图导航,需要分两个步骤 #define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevic ...

  5. Oracle数据库中char, varchar, nvarchar的差异

    1. char      固定长度,最长n个字符.   2. varchar      最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同)   char和varchar区别:   ...

  6. 怎样将某一类型标识为适合绑定到 System.Web.UI.WebControls.ObjectDataSource 对象的对象

    1.页面的代码如下: body> <form id="form1" runat="server"> <div> </div& ...

  7. for else

  8. USB协议-USB的包结构及包的分类

    USB是串行总线,所以数据是一位一位地在数据线上传送的.既然是一位一位地传送,就存在着一个数据位先后的问题.USB使用的是LSB在前的方式,即先出来的是最低位数据,接下来是次低位,最后是最高位(MSB ...

  9. (实用篇)PHP页面跳转到另一个页面的方法总结

    一.用HTTP头信息  也就是用PHP的header函数.PHP里的header函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("C ...

  10. Eclipse Pydev 技巧汇编

    之前一直使用eclipse中默认的console.但是这个console并不是interactive的,如果数据比较小的时候还行,数据量一旦很大,则每次调试都需要重新再跑一遍程序,从而浪费很多时间. ...