C#学习之LinqtoSql类的简单例子

转载至 https://www.cnblogs.com/zouzf/archive/2012/02/28/2371740.html 

LinqtoSql类把访问、操作数据库的细节封装了起来,把连接操作数据库变得相当简单。下面是简单的例子。 

第一步:添加LinqtoSql类

1、创建一个控制台应用程序项目,下载一个NrothWind 数据库放到解决方案里面。然后点击控制台项目右键选择添加,选择类

选择LINQ to SQL 类,名称改为NorthWindDB,因为一会是连接NorthWind数据库的。

2、此时,解决方案里的内容如下

3、双击NorthWindDB.dbml文件,然后鼠标点击一下左边的编辑框,按F4,右边就会弹出NorthWindDB.dbml文件的相关属性信息

NorthWindDBDataContext 就是编译器自动生成的继承于 DataContext 类的一个类,就是这个类封装了操作数据库的细节。上下文命名空间(就是NorthWindDBDataContext类所在的命名空间),默认是空的,我们给它加上 NorthWindDBCont。实体命名空间(编译器会把我们链接到的数据库里面我们用到的表都映射成一个对应的类(表的列对应类的属性),那些对应着表映射出来的类就属于这个命名空间),默认也是空的,填上 NorthWindDBEnts 。

第二步:可视化连接数据库

1、选择工具栏的视图,选择服务器资源管理器,右键点击数据连接,选择添加链接

2、弹出添加连接对话框,点更改

3、弹出更改数据源对话框,选择 Microsoft SQL Server 数据库文件

4、点浏览

5、选择刚才下载的NorthWind.MDF数据库文件

6、点左下角的测试,如不成功,重新操作 第二步。如果成功,打开服务器资源管理器,可以看到NorthWind数据库已经加载成功。双击NorthWindDB.dbml文件,把里面的表 Customers 、 Orders拖过去

这个时候,编译器就会自动在 NorthWindDBEnts命名空间里创建两个类来对应着这两个表。

打开NorthWindDB.designer.cs文件,NorthWindDBEnts命名空间下的代码如下:

第三步:主代码

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

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建NorthWindDBCont.NorthWindDBDataContext的实例
            NorthWindDBCont.NorthWindDBDataContext ctx = new NorthWindDBCont.NorthWindDBDataContext();

            //查询住在London的顾客
            var q = from x in ctx.Customers
                    where x.City == "London"
                    select new { x.ContactName, x.City};

            if (q.Count() != 0)
            {
                foreach (var item in q)
                {
                    Console.WriteLine(item);
                }              
            }
            else
            {
                Console.WriteLine("nobody in London");
            }
            Console.WriteLine();

            //创建NorthWindDBEnts.Customers 的实例
            NorthWindDBEnts.Customers myCustomer = new NorthWindDBEnts.Customers();

            //对表Customers进行查询,把查询得到的住在London的顾客
//并把查得的第一个顾客返回赋给NorthWindDBEnts.Customers类 的实例
            myCustomer = ctx.Customers.First(a => a.City == "London");
            Console.WriteLine(myCustomer.ContactName);
            
            Console.ReadKey();
        }
    }
}

输出如下:

原文地址:https://www.cnblogs.com/jshchg/p/12366629.html