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

MSDN说:表示基础数据库中特定类型的表。我想问Table<TEntity>是指向某个‘数据库表的引用’,还是‘内存中真正存储了数据的实体对象’?... MSDN说:表示基础数据库中特定类型的表。我想问Table<TEntity>是 指向某个‘数据库表的引用’,还是‘内存中真正存储了数据的实体对象’? 展开
 我来答
N_0_1
高粉答主

推荐于2016-07-23 · 关注我不会让你失望
知道大有可为答主
回答量:8628
采纳率:47%
帮助的人:836万
展开全部

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();          
           
       }
   }
}

程序运行结果如下:

匿名用户
2013-08-14
展开全部
LINQ的主体还是AOD.NET 所以在内存中的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-14
展开全部
Table<TEntity> TEntity 是一个 public partial class..一般和数据库中的表同名,在类定义的上一行写上[Table(Name="xxx")] //其中xxx是表名,如dbo.SomeThing这句话的作用是映射。如[Table(Name="dbo.xxxLog")]public partial class xxxLog : INotifyPropertyChanging, INotifyPropertyChanged(INotifyPropertyChanging, INotifyPropertyChanged 这两个接口可以看看 System.ComponentModel )
用你的问题来说就是数据库表的引用,在定义这个Tentity类的时候,类内部需要把表中的字段也定义清楚,字段也同样是需要映射的,类中字段作为一个成员变量比如[Column(Storage="_LogID", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]public System.Guid LogID { 。。。 }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式