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();
        }
    }
}
posted @ 2010-03-20 17:42  陈希章  阅读(729)  评论(2编辑  收藏  举报