SQL Server 2008 Entity Data Model 和 Linq to Entities

来源:互联网 发布:php 程序调用文件记录 编辑:程序博客网 时间:2024/06/05 16:58

转自:http://www.xker.com/page/e2009/0415/71272_4.html

SQL Server 2008 带给大家的新特性之一就是 Entity Data Model 。使用它可以很方便的创建数据模型,并且它和Linq有着近乎完美的结合。这次我们就一起来体验下 Entity Data Model 给我们带来的便利。

   先来说下我的系统环境:

   1. Windows Server 2003

   2. VS2008

   3. SQL Server 2008

   4. Pubs2数据库

   注意,使用Entity Data Model 是 SQL Server 2008 带给我们的新特性,所以不能使用SQL Server 2005 来做实验。

   好,下面我们进入正题

  1. 启动Visual Studio 2008。

  2. 创建一个 Console Application 项目 pubs2edmapp。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  3. 在右侧Solution Explorer 中,右键点击项目 pubs2edmapp,然后点击Add New Item,在 Add New Item 对话框中选择 ADO.net Entity Data Model。将新建项目命名为pubs2.edmx,然后点击ADD。

SQL Server 2008 Entity Data Model 和 Linq to Entities

SQL Server 2008 Entity Data Model 和 Linq to Entities

  4. 在Entity Data Model Wizard 对话框中,选择 Generate from database. 然后点击Next。

SQL Server 2008 Entity Data Model 和 Linq to Entities

5. 点击 New Connection. 在 Choose Data Source 对话框中,选择 Microsoft SQL Server 并点击 Continue: 在 Connection Property 对话框中的 Server 文本框中选择数据库实例,然后在 Select or enter a database name 中选择 Pubs 。

SQL Server 2008 Entity Data Model 和 Linq to Entities

SQL Server 2008 Entity Data Model 和 Linq to Entities

SQL Server 2008 Entity Data Model 和 Linq to Entities

  6. 勾选 Save Entity Connection string in App.Config 并保留默认设置,点击 Next。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  7. 在 Choose You Database Objects 对话框中,选中 Tables,Views,以及 Stored Procedures.在 Model Namespace 中设置为 pubsModel.点击Finish.

SQL Server 2008 Entity Data Model 和 Linq to Entities

  8. 此时会出现图形化的 Object Relational Designer 面板。


SQL Server 2008 Entity Data Model 和 Linq to Entities

  9. 保存模型。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  Model Browser 中的 Entity 实体。可以看到 Table , Views , Stored Procedures 都被加载了进来。

  10. 点击 Build 菜单下的 Build Solution 编译项目。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  11. 打开 Program.cs 在 Main 方法中,实例化pubsEntities . 将变量命名为 model.

SQL Server 2008 Entity Data Model 和 Linq to Entities

  12. 为了能够看到生成的 T-SQL 语句,我们创建一个 helper 类,其中包含一个 helper 方法。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  注意上面的 using System.Data.Objects; 的引用。Helper 实际上是扩展的Linq,这也是vs08的新特性,有兴趣的自己去研究吧。

13. 打开 ObjectContext 的连接。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  14. 新建一个名为 SimpleQueries 的 public static 方法,将 pubsEntities 作为输入参数且无返回值。在这个方法中我们使用 Linq 查询。

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

namespace pubs2endmapp
{
    class Program
    {
        static void Main(string[] args)
        {
            pubs2endmapp.pubsEntities1 model = new pubsEntities1();
            model.Connection.Open();
            SimpleQueries(model);
            model.Connection.Close();
            Console.Read();
        }

        public static void SimpleQueries(pubsEntities1 model)
        {
            var query1 = from a in model.authors
                         select new { a.au_id, a.au_fname, a.au_lname };
            foreach (var query in query1)
            {
                Console.WriteLine("au_id:{0,-20} au_fname:{1,-20} au_lname:{2,-20}"
                    ,query.au_id,query.au_fname,query.au_lname);
            }
            Console.WriteLine("SQL: " query1.ToTraceString());
        }
    }
}

  完整代码如上。

  15. 编译并执行代码。

SQL Server 2008 Entity Data Model 和 Linq to Entities

  实验到此结束。

  现在我们可以很简单的通过 Linq 实现数据库的操作了。