zoukankan      html  css  js  c++  java
  • 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日

    转载请注明出处

    代码及数据库备份下载

  • 相关阅读:
    java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
    java 多线程研究:锁的概念
    PHP 学习笔记之一:thinkPHP的volist标签
    Flask 学习篇二:学习Flask过程中的记录
    Docker 学习应用篇之三: Docker的简单实用
    CodeForces 832B Petya and Exam
    CodeForce 832A Sasha and Sticks
    Docker 学习应用篇之二: Docker的介绍和安装
    ASP.NET中AJAX的异步加载(Demo演示)
    Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)
  • 原文地址:https://www.cnblogs.com/lanwilliam/p/1435025.html
Copyright © 2011-2022 走看看