zoukankan      html  css  js  c++  java
  • 黄聪:2.Linq初体验 Linq2SQL示例(原创)

    Linq2SQL只是Linq中的一个很小的功能部分,我们今天就来看看用Linq如何对数据库进行增删查改的操作.

    我的测试环境是:WIN7 + VS2008 + SQL2005

    要想实现用Linq对数据库进行操作,我们要做的事情有如下几个:

    1.      创建数据库,表和测试数据

    2.      创建Linq To SQL类,配置类和数据库中的表的映射关系

    3.      使用Linq的API函数对数据库进行操作

    1.      创建数据库,表和测试数据

    数据库:

    User表:

    测试数据:

    SQL创建语句:

    代码
    USE [master]
    GO
    Create DataBase [LinQTest]
    GO
    USE [LinQTest]
    GO
    CREATE TABLE [dbo].[User](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    )
    ON [PRIMARY]
    GO
    INSERT INTO [User] ([Name]) VALUES ('zhang san')
    INSERT INTO [User] ([Name]) VALUES ('li si')
    INSERT INTO [User] ([Name]) VALUES ('wang wu')
    INSERT INTO [User] ([Name]) VALUES ('zhang lu')
    INSERT INTO [User] ([Name]) VALUES ('lao liang')
    INSERT INTO [User] ([Name]) VALUES ('lao san')

    2.      创建Linq To SQL类,配置类和数据库中的表的映射关系

      1.      新建一个Linq To SQL类:

      

      2.      点击”服务器资源管理器”,然后在”数据连接”中添加我们刚刚创建好的LinQTest数据库为数据源

      

      3.      将User表拖拽至Linq2SQL设计器中,VS会自动实现User表到User类的映射

      

      4.      VS自动生成的User类的有关信息都在Linq2SQL.designer.cs中,大家可以打开这个文件好好看看里面都是什么内容

      

    3.      好了,数据库准备完毕,映射也做好了,接下来就是看如何使用Linq来操作数据库了.我们就从查询开始吧,回到Main函数中,我们输入如下代码:

    代码
    //-----------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
    //-----------------------------------------------------------

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

    namespace Linq2SQL体验
    {
    /// <summary>
    /// Program
    ///
    /// 修改纪录
    ///
    /// 2010.12.25 版本:1.0 黄聪 创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    /// <name>黄聪</name>
    /// <date>2010.12.25</date>
    /// </author>
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //Linq To SQL 体验
    Linq2SQLDataContext linq = new Linq2SQLDataContext();

    //查询所有的User
    var users = linq.User.Select(u => u);

    foreach (var user in users)
    {
    Console.WriteLine(user.Name);
    }
    }
    }
    }

    运行结果:

    其中核心代码为:

    var users = linq.User.Select(u => u);

    如何?简单吧?一句SQL语句都不用写,连3层架构都不用搭建,就可以如此简单的对数据库进行查询了.

    如果你想查询姓zhang的User,还可以这样写:

    代码
    //-----------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
    //-----------------------------------------------------------


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

    namespace Linq2SQL体验
    {
    /// <summary>
    /// Program
    ///
    /// 修改纪录
    ///
    /// 2010.12.25 版本:1.0 黄聪 创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    /// <name>黄聪</name>
    /// <date>2010.12.25</date>
    /// </author>
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //Linq To SQL 体验
    Linq2SQLDataContext linq = new Linq2SQLDataContext();

    //查询所有的User
    //var users = linq.User.Select(u => u);

    //查询姓zhang的User
    var users = linq.User.Select(u => u).Where(u => u.Name.StartsWith("zhang"));

    foreach (var user in users)
    {
    Console.WriteLine(user.Name);
    }
    }
    }
    }

    运行结果:

    其中核心代码为:

    var users = linq.User.Select(u => u).Where(u => u.Name.StartsWith("zhang"));

    哈哈,是不是也很简单呀?

    下面继续讲如何使用Linq进行Insert,在Main中输入如下代码:

    代码
    //-----------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
    //-----------------------------------------------------------


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

    namespace Linq2SQL体验
    {
    /// <summary>
    /// Program
    ///
    /// 修改纪录
    ///
    /// 2010.12.25 版本:1.0 黄聪 创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    /// <name>黄聪</name>
    /// <date>2010.12.25</date>
    /// </author>
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //Linq To SQL 体验
    Linq2SQLDataContext linq = new Linq2SQLDataContext();

    //插入一个Name为黄聪的用户
    User newUser = new User();
    newUser.Name
    = "黄聪";

    //使用Linq插入该用户到数据库中
    linq.User.InsertOnSubmit(newUser);
    linq.SubmitChanges();

    //查询所有的User
    var users = linq.User.Select(u => u);

    foreach (var user in users)
    {
    Console.WriteLine(user.Name);
    }
    }
    }
    }

    运行结果:

    其中核心代码为:

    //插入一个Name为黄聪的用户
    User newUser = new User();
    newUser.Name
    = "黄聪";

    //使用Linq插入该用户到数据库中
    linq.User.InsertOnSubmit(newUser);
    linq.SubmitChanges();

    我们继续看如何使用Linq来更新数据:

    代码
    //-----------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
    //-----------------------------------------------------------


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

    namespace Linq2SQL体验
    {
    /// <summary>
    /// Program
    ///
    /// 修改纪录
    ///
    /// 2010.12.25 版本:1.0 黄聪 创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    /// <name>黄聪</name>
    /// <date>2010.12.25</date>
    /// </author>
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //Linq To SQL 体验
    Linq2SQLDataContext linq = new Linq2SQLDataContext();

    //查找出要修改的User
    User newUser = linq.User.Single(u => u.Id == 1);
    newUser.Name
    = "Huang Cong";

    //更新至数据库中
    linq.SubmitChanges();

    //查询所有的User
    var users = linq.User.Select(u => u);

    foreach (var user in users)
    {
    Console.WriteLine(user.Name);
    }
    }
    }
    }

    运行结果:

    其中核心代码为:

    //查找出要修改的User
    User newUser = linq.User.Single(u => u.Id == 1);
    newUser.Name
    = "Huang Cong";

    //更新至数据库中
    linq.SubmitChanges();

    最后我们来看看如何用Linq来进行数据的删除:

    代码
    //-----------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd .
    //-----------------------------------------------------------


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

    namespace Linq2SQL体验
    {
    /// <summary>
    /// Program
    ///
    /// 修改纪录
    ///
    /// 2010.12.25 版本:1.0 黄聪 创建。
    ///
    /// 版本:1.0
    ///
    /// <author>
    /// <name>黄聪</name>
    /// <date>2010.12.25</date>
    /// </author>
    /// </summary>
    class Program
    {
    static void Main(string[] args)
    {
    //Linq To SQL 体验
    Linq2SQLDataContext linq = new Linq2SQLDataContext();

    //查找出要删除的User
    User delUser = linq.User.Single(u => u.Id == 1);
    linq.User.DeleteOnSubmit(delUser);

    //更新至数据库中
    linq.SubmitChanges();

    //查询所有的User
    var users = linq.User.Select(u => u);

    foreach (var user in users)
    {
    Console.WriteLine(user.Name);
    }
    }
    }
    }

    运行结果:

    其中核心代码为:

    //查找出要删除的User
    User delUser = linq.User.Single(u => u.Id == 1);
    linq.User.DeleteOnSubmit(delUser);

    //更新至数据库中
    linq.SubmitChanges();

    好了,以上就是我们使用Linq对数据库进行增删改查的示例,很简单,

    但是Linq的功能绝对不止这么一些,我会在接下来的文章中和大家一起学习的.

    再次声明:

    本人也是刚刚开始学习Linq,本文仅提供给与我一样的初学者作为参考,

    高手们请不要喷饭哈,如果有错误的地方还请各位见谅~~

    相关文章

    1.LinQ初体验 简单的示例(原创)

    2.Linq初体验 Linq2SQL示例(原创)

    3.Linq推迟查询的执行(原创)

    4.Ling初体验 匿名类型在查询表达式中的使用

    5.Linq初级班 标准查询操作符的使用和调用

    6.Linq初级班 Linq To XML体验(编程篇)

    7.Linq初级班 Linq To XML体验(基础篇)

    8.Linq初级班 Linq To XML体验(高级编程篇)

  • 相关阅读:
    SequenceInputStream
    BufferedReader
    FileWriter
    FileReader
    BufferedOutputStream
    javascript/html 禁止图片缓存
    localStorage util
    FormData上传文件 带进度条
    javascript 一些函数的实现 Function.prototype.bind, Array.prototype.map
    替代jquery中的几个函数
  • 原文地址:https://www.cnblogs.com/huangcong/p/1916822.html
Copyright © 2011-2022 走看看