惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy & Cybersecurity Law Blog
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
罗磊的独立博客
F
Fortinet All Blogs
T
Threatpost
Y
Y Combinator Blog
博客园_首页
美团技术团队
Security Latest
Security Latest
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
V
V2EX - 技术
The Cloudflare Blog
L
LINUX DO - 热门话题
博客园 - 司徒正美
Jina AI
Jina AI
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Hacker News
The Hacker News
P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Latest news
Latest news
NISL@THU
NISL@THU
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
雷峰网
雷峰网
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog RSS Feed
W
WeLiveSecurity
D
DataBreaches.Net
G
Google Developers Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
Know Your Adversary
Know Your Adversary
TaoSecurity Blog
TaoSecurity Blog
S
Securelist
Help Net Security
Help Net Security

博客园 - IT战神

[评论]为什么程序员的社会地位不高?--转载 转载--解决PowerDesigner 反向工程没有列注释(SQLSERVER 2005版) , 获取相对路径 (c#) 数据库优化(转载) asp.net开源项目及学习资料 C#.net同步异步SOCKET通讯和多线程总结 winform的ftp方式上传 - IT战神 - 博客园 ms agent 精灵 带右键菜单c# c#面实题及答案 哲理人生 - IT战神 - 博客园 创业 史玉柱经典语录(转) jsp 面试题 regsvr32 注册大全 DotNet控件开发的资料列表(共享) ie6 和ie7版本带来的一个奇怪的中文乱码问题(长度为奇数时最后一个字符会出现乱码)(原创) uml 图解 jsp cookie 中文乱码 的解决方法 xtree,不错的javascript树
Linq to Entities实例
IT战神 · 2009-08-21 · via 博客园 - IT战神

 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 实现数据库的操作了。

来自 http://www.ittang.com/2009/0413/9173_3.html