SQL Server 2008 Entity Data Model 和 Linq to Entities

    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。

image

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

image

image

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

image

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

image

image

image

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

image

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

image

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

image

9. 保存模型。

image

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

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

image

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

image

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

image

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

13. 打开 ObjectContext 的连接。

image

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. 编译并执行代码。

image

实验到此结束。

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

作者:王文斌

2009年4月13日

转载请注明出处

代码及数据库备份下载

原文地址:https://www.cnblogs.com/lanwilliam/p/1435025.html