zoukankan      html  css  js  c++  java
  • LINQ to SQL的快速入门例子

    这也是今天课堂上的一个简单例子,演示了如何使用LINQ to SQL的技术,以及C# 3的一些新特性

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace LINQtoSQLSample
    {
        class Program
        {
            static void Main(string[] args)
            {
                //利用LINQ TO SQL实现快捷高效的数据库访问
                //0.准备:创建DataContext对象
                TraceModelDataContext context = new TraceModelDataContext();
                context.Log = Console.Out;
    
                //var context2 = new TraceModelDataContext();
                //C# 3的新语法,var关键字是表示类型推断
    
    
                //var context3 = new TraceModelDataContext("server=(local);database=db;integrated security=true");
                //如果生产服务器上面的数据库连接是更改过的,则需要这样构造
    
                //1.查询全部
                var query1 = context.Logs;
                DisplayLogs("显示全部的",query1);
    
                //2.查询带筛选
                var query2 = context.Logs.Where(l => l.Id % 2 == 1&&l.Message.Contains("Test"));
                //2.1 where是c# 3的一个新特性,叫扩展方法
                //2.2 l=>1.Id...是C# 3的一个新特性,叫lambda表达式,实际上是一个委托delegate
                DisplayLogs("显示奇数的条目", query2);
    
    
    
                //3.查询带排序
                var query3 = context.Logs.OrderByDescending(l => l.Time);
                DisplayLogs("查询带排序", query3);
    
    
                //4.查询取中间一部分
                var query4 = context.Logs.Skip(1).Take(2);
                DisplayLogs("查询一部分", query4);
    
                //var query5 = context.Logs.OrderByDescending(l => l.Id).Skip(1).Take(2);
                //var query6 = context.Logs.OrderByDescending(l => l.Id).ThenBy(l => l.Time);
    
    
                //5.插入一个新的条目
                var log = new Logs()
                {
                    Message = "测试消息",
                    Time=DateTime.Now
                };
                //5.1 {}也是c# 3的新特性,表示直接构造一个对象
                context.Logs.InsertOnSubmit(log);
                context.SubmitChanges();
                DisplayLogs("显示全部的", query1);
    
                //6.更新一个条目
                var firstLog = context.Logs.FirstOrDefault(l => l.Id == 1);
                if (firstLog != null)
                {
                    firstLog.Message = "修改过之后的消息";
                    context.SubmitChanges();
                    DisplayLogs("显示全部的", query1);
                }
    
                //7.删除一个条目
                var deleteEntry = from l in context.Logs
                                  where l.Id == 1
                                  select l;
                var found = deleteEntry.FirstOrDefault();
                if (found != null) {
                    context.Logs.DeleteOnSubmit(found);
                    context.SubmitChanges();
                    DisplayLogs("显示全部的", query1);
                }
    
                Console.Read();
    
            }
    
            private static void DisplayLogs(string message,
                IEnumerable<Logs> query1)
            {
    
                Console.WriteLine(message);
                foreach (var item in query1)
                {
                    Console.WriteLine("Id:{0},Time:{1},Message:{2}",
                        item.Id,
                        item.Time,
                        item.Message);
    
                }
                Console.WriteLine();
            }
        }
    }
    
  • 相关阅读:
    位运算的应用
    MySql的自增主键以及TEXT数据类型使用
    MaxDos启动盘拆解
    QT预备式(包含MySql配置)未完成……
    关于Services.exe开机CPU内存使用暴增解决方案
    Windows Upnp 服务补丁——UpnpFix V1.0
    Memory Ordering
    "FoxitReaderOCX.ocx failed to load" 问题解决方案
    LameDropXPd V2.0 (L.A.M.E 3.97) 完美汉化版
    编译QT的MySql驱动问题及解决方案
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1690563.html
Copyright © 2011-2022 走看看