ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,现已经包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中发布。目前最新版本为4.1,可以点此下载。

  ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有 Entity Client,Object Context 以及 LINQ 可以使用。在最新4.1版本中,增加了 DbContext API及Codefirst,DbContext API是基于ObjectContext和其他一些类型抽象出的一个简单的API,并进行了优化。 Code First是基于Entity Framework的新的开发模式,原先只有Database First和Model First两种。Code First先用C#/VB.NET的类定义模型,然后映射到现有的数据库或者产生新的数据库结构。Code First同样支持通过Data Annotations或fluent API进行定制化配置。过多的内容就不多说了,框架图下:

  简单介绍就到这里,先来构建一个简单的例子,来感受一下这个框架。这个例子采用简单的Database-First方法.

  首先在建一个示例数据库BlogDB,然后创建两张表如下图示:

  随便录入一些测试数据。

  第二步:打开VS2010,新建控制台应用程序EFSample

  第三步:右键工程目录,在弹出菜单点击添加新项,添加ADO.Net Entity Data Model,并命名为:Blog.edmx,如下图示:

  

  在弹出的新窗口,选择Generate from database,下一步

  

  选择数据连接,并将数据库连接字符串保存在程序中,继续下一步

  

  选择要添加的表,完成,这时就添加好了这个Blog.edmx,这个文件是从数据库自动生成的模型文件,基于xml格式,包含概念模型、存储模型以及这两个模型之间的映射。如下图示:

  

  这是最后生成的EDM。

  

  最后,打开Program.cs 键入代码,如下示。

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

namespace EFSample{    class Program    {        static void Main(string[] args)        {            IList<BlogUser> blogUsers = TestEF.GetAllBlogUsers();

            ///遍历所有查询结果            foreach (var blogUser in blogUsers)            {                Console.WriteLine(blogUser);

                ///获取外键对象的内容                foreach (var post in blogUser.Posts)                {                    Console.WriteLine("\t 随笔标题:{0}",post.PostTitle);                }            }        }    }

    public static class TestEF    {        public static IList<BlogUser> GetAllBlogUsers()        {            ///BlogDBEntities是继承于ObjectContext类,自动生成            ///可以打开Blog.Desgner.cs文件找到            ///原型: public partial class BlogDBEntities : ObjectContext            ///可以理解为 他代表了当前数据库环境对象            ///同时,在Blog.Desgner.cs里还可以找到两个实体BlogUser及Post            BlogDBEntities blogDB = new BlogDBEntities();            ///采用Linq语法读取数据            IList<BlogUser> blogUsers = blogDB.BlogUsers.ToList<BlogUser>();            return blogUsers;        }    }

    public partial class BlogUser    {        public override string ToString()        {            return string.Format("编号:{0} 姓名:{1}", this.BlogID, this.BlogName);        }    }}

  下面可以运行,测试,效果如图:

EF框架step by step(1)—Database-First相关推荐

  1. 【.NET】EF框架之三种模式

    使用EF之前必须要对EF有个宏观的了解.学习任何一种技术都要像门卫一样问几个问题. 第一,它是谁? 第二,从哪里来? 第三,到哪里去? 默念一遍:不谋全局者,不足谋一域. 今天老师宏观给讲了一下EF的 ...

  2. Caffe使用step by step:caffe框架下的基本操作和分析

    Caffe使用step by step:caffe框架下的基本操作和分析 时间:2015-10-16 11:40:09      阅读:808      评论:0      收藏:0      [点我 ...

  3. Asp.Net Core 5 REST API - Step by Step(一)

    翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...

  4. Asp Net Core 5 REST API 使用 RefreshToken 刷新 JWT - Step by Step(三)

    翻译自 Mohamad Lawand 2021年1月25日的文章 <Refresh JWT with Refresh Tokens in Asp Net Core 5 Rest API Step ...

  5. Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step(二)

    翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...

  6. GoFrame Step by Step Demo - P1

    GoFrame Step by Step Demo P1 框架说明文档 GFTool 安装 Web框架学习 文章目录 GoFrame Step by Step Demo P1 参考Demo 记录 安装 ...

  7. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  8. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  9. NHibernate Step by Step:序篇 (转)

    原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...

  10. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

最新文章

  1. 德哥:从Oracle DBA到PostgreSQL布道者
  2. 关联分析算法c语言实现,机器学习关联分析
  3. Ulink2 No Ulink Device found 解决办法
  4. 【332】Machine Learning
  5. 使用PLupload在同一页面中进行多个不同类型上传解决方案和一次多文件上传的注意事项...
  6. c语言标准化考试程序报告,在线考试系统-c语言报告.doc
  7. 【转】WPF/Silverlight开发的15个最佳实践
  8. Qt实现多语言切换 - Qt语言家
  9. 画出属于你的最漂亮的数字时序图—WaveDrom
  10. mysql杀死锁死的进程_如何杀死MySQL进程
  11. 边缘计算开源框架EdgeXFoundry的部署应用开发(三)设备服务开发
  12. 新茶饮、新烘焙的2021:亏损与食安问题未解,元宇宙和第三空间又来凑热闹
  13. iOS Keychain(钥匙串)原理及使用
  14. Hash Function 2021牛客暑期多校训练营1 数论 + NTT
  15. 如何修复u盘?不如试试我这3个方法
  16. 分治法解决计算凸包问题
  17. Meta明年重押AR Apple成最强拦路虎
  18. C语言—商品销售系统
  19. C/C++中 宏定义字符串 操作
  20. Windows7 SP1(MSDN版)

热门文章

  1. [转] python提取计算结果的最大最小值及其坐标
  2. 【SSH】 之 Struts2
  3. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...
  4. route debugger
  5. opensuse 11.2/11.3安装vmware server 1.0.10笔记
  6. Delphi中的字符串压缩与解压缩
  7. python之matplotlib中plt.show()不显示
  8. java 数组 null值_数组的元素String在java中包含null
  9. php smarty ci,CI整合Smarty,cismarty_PHP教程
  10. [ FAILED ] SGDSolverTest/0.TestSnapshotShare, where TypeParam = caffe::CPUDevicefloat解决方案