• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#操作LINQ to SQL组件进行数据库建模的基本教程

C#操作LINQ to SQL组件进行数据库建模的基本教程

作者:DebugLZQ 字体:[增加 减小] 来源:互联网 时间:2017-05-28

DebugLZQ 通过本文主要向大家介绍了马桶c的个人空间,c语言,欲情 c max,维生素c,奔驰c200等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

建立实体类
使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类。在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作。数据库返回后,LINQ to SQL负责将结果转换成实体类对象。

建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等。其中最方便的就是LINQ to SQL设计器。

1.使用LINQ to SQL设计器建立实体类        
在一个示例用的Demo控制台程序中添加一个“基于服务的数据库”Database1.mdf,建立一张tb_GuestInfo的表。该表的详细如下:

201637151447232.png (410×180)

下面的所有建立方式,都用的这个数据库。

在项目中添加一个LINQ to SQL类,采用默认的名称DataClasses1.dbml,如下:

201637151549229.jpg (955×608)

将tb_GuestInfo表拖到界面上,保存。

201637151656732.png (240×183)

OK,编写相关代码如下,实现增删改查:

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

namespace LINQ_To_SQL自定义数据库和实体类
{
  /// <summary>
  /// 实体类的建立___1.VS建立实体类
  /// </summary>
  class Program
  {
    static void Main(string[] args)
    {
      //
      DataClasses1DataContext dc = new DataClasses1DataContext();
      
      //1.查询
      IQueryable<tb_GuestInfo> query = from p in dc.tb_GuestInfo
                       where p.Name != "XXX"
                       select p;

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

      Console.WriteLine("-----------------");
      Console.ReadKey(false);
      //2.增加一条记录
      tb_GuestInfo gInfo = new tb_GuestInfo() { Id = 9, Name = "M&M", Age = 40, Tel = "135****5555" };
      dc.tb_GuestInfo.InsertOnSubmit(gInfo);
      dc.SubmitChanges();

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

      Console.WriteLine("-----------------");
      Console.ReadKey(false);

      //3.删除
      var query_itemToDelete = from g in dc.tb_GuestInfo
                   where g.Name == "M&M"
                   select g;
      foreach (var g in query_itemToDelete)
      {
        dc.tb_GuestInfo.DeleteOnSubmit(g);
      }
      dc.SubmitChanges();


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

      //4.修改
      var query_itemToUpdate = from g in dc.tb_GuestInfo
                   where g.Name.Contains("DebugLZQ")
                   select g;

      foreach (var g in query_itemToUpdate)
      {
        g.Name = g.Name + "A";
      }
      dc.SubmitChanges();


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

      Console.WriteLine("-----------------");
      Console.ReadKey(false);

    }
  }
}

</div>

程序运行结果如下:

201637151722687.png (677×442)

2.手动建立实体类                    
实体类在多数情况下可以通过LINQ to SQL类设计器建立,当然动手建立一个简单的实体类也不是难事,并且可以更好的学习LINQ to SQL的对象模型。数据库依然是前面的示例数据库。

在项目中添加一个类GuestInfoEntity.cs,如下:

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

namespace DataContexDemo
{
  /// <summary>
  /// 手动建立实体类
  /// </summary>
  [Table(Name="tb_GuestInfo")]
  class GuestInfoEntity
  {
    [Column(IsPrimaryKey=true,DbType="Int NOT NULL IDENTITY",IsDbGenerated=true,Name="Id")]
    public int ID { get; set; }

    [Column(DbType = "nvarchar(20)", Name = "Name")]
    public string Name{get;set;}

    [Column(DbType = "int", Name = "Age")]
    public int Age { get; set; }

    [Column(DbType = "nvarchar(20)", Name = "Tel")]
    public string Tel { get; set; }
  }
}

</div>

编写示例代码,注意需要引入System.Data.Linq.dll:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;//关注

namespace DataContexDemo
{
  class Program
  {
    static void Main(string[] args)
    {
      //2.手动建立实体类
      //
      //连接字符串
      string constring = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Visual Studio 2010\LINQ_to_SQL\LINQ_To_SQL自定义数据库和实体类\Database1.mdf;Integrated Security=True;User Instance=True";

      DataContext dc = new DataContext(constring);

      Table<GuestInfoEntity> tb = dc.GetTable<GuestInfoEntity>();

      var query = tb.AsEnumerable();

      foreach (var q in query)
      {
        Console.WriteLine("{0} {1} {2} {3}",q.ID,q.Name,q.Age,q.Tel );
      }

      Console.ReadKey();
    }
  }
}

</div>

程序运行如下:

201637151816553.png (677×442)

3.使用XML映射文件建立实体类                         
 实体类的映射除了使用内联Attribute外,还可以建立一个包含映射信息的XML文件,此文件生成System.Data.Linq.Mapping.XmlMappingSource对象,作为DataContext对象构造方法的参数。

这个XML文件只有一个根节点---Database元素,用来映射的数据库信息。Database元素包含一个或多个Table元素,用于映射数据库表的信息,Table元素由一个Type元素和多个Column元素(或Association元素)组成。Type元素用来指定实体类,Column元素用来指定列信息,Association元素用来映射数据库关系。

在项目中添加一个XML文件,采用默认名称XMLFile1.xml,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<Database Name="Database1" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007"><!--数据库名称可随意;名称空间一定要加上-->
 <Table Name="tb_GuestInfo"><!--数据库中表的名称-->
  <Type Name="LINQtoSQL建立实体类_XML.GuestInfoEntity"><!--太BT了,居然要全名;GuestInfoEntity居然不行-->  
   <Column Name="Id" Member="ID" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true"/>
   <Column Name="Name" Member="Name" DbType="nvarchar(20)" />
   <Column Name="Age" Member="Age" DbType="int" />
   <Column Name="Tel" Member="Tel" DbType="nvarchar(20)" />
  </Type>
 </Table>
</Database>

</div>

这个XML文件包含类全部的映射信息,下面建立映射的类GuestInfoEntity.cs:

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

namespace LINQtoSQL建立实体类_XML
{
  public class GuestInfoEntity
  {    
    public int ID { get; set; }
    
    public string Name { get; set; }
    
    public int Age { get; set; }
    
    public string Tel { get; set; }
  }
}

</div>

编写示例代码,同样需要引入System.Data.Linq.dll:




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#利用ReportViewer生成报表
  • C#基于正则去掉注释的方法示例
  • C#中new的用法及与override的区别分析
  • C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • C# for循环的经典案例集锦
  • C#操作word的方法示例
  • C#使用WebClient登录网站并抓取登录后的网页信息实现方法
  • C# WinForm制作异形窗体与控件的方法
  • C#实现Excel表数据导入Sql Server数据库中的方法
  • C#使用NPOI上传excel

相关文章

  • 2017-05-28c#静态方法和非静态方法详细介绍
  • 2017-05-28C#实现计算一个点围绕另一个点旋转指定弧度后坐标值的方法
  • 2017-05-28Windows服务编写(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
  • 2017-05-28c#创建vc可调用的com组件方法分享
  • 2017-05-28C#几种获取网页源文件代码的实例
  • 2017-05-28Windows中使用C#为文件夹和文件编写密码锁的示例分享
  • 2017-05-28json格式数据分析工具PageElement类分享(仿Session写法)
  • 2017-05-28C#实现软件监控外部程序运行状态的方法
  • 2017-05-28C#多线程学习之(二)操纵一个线程的方法
  • 2017-05-28C#使用windows服务发送邮件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#无损高质量压缩图片实现代码
    • C#数据结构与算法揭秘四 双向链表
    • C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法
    • 采用C#代码动态设置文件权限
    • C#仿密保卡功能的简单实现代码
    • WinForm 自动完成控件实例代码简析
    • 探讨C#中Dispose方法与Close方法的区别详解
    • C#实现将类的内容写成JSON格式字符串的方法
    • 解决C#全屏幕截图的实现方法
    • C# TextBox控件实现只能输入数字的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有