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体验(高级编程篇)

  • 相关阅读:
    CentOS查看CPU信息、位数、多核信息
    Linux常用命令大全
    chmod命令详细用法
    tar命令的详细解释
    yum和rpm命令详解
    LeetCode 241. Different Ways to Add Parentheses
    LeetCode 139. Word Break
    LeetCode 201. Bitwise AND of Numbers Range
    LeetCode 486. Predict the Winner
    LeetCode 17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/huangcong/p/1916822.html
Copyright © 2011-2022 走看看