EF框架step by step(1)—Database-First

来源:互联网 发布:vs windows api 编辑:程序博客网 时间:2024/05/16 06:19

  出处:http://www.cnblogs.com/yangyancheng/archive/2011/04/29/2032817.html

         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); } }}
复制代码

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿拉屎是水怎么办 婴儿拉屎稀水怎么办 新生儿睡得少怎么办 小孩大便是水怎么办 婴儿大便稀水样怎么办 小孩晚上睡不着觉怎么办 小孩小鸡头红怎么办 儿童睡觉磨牙齿怎么办 幼儿小鸡红肿疼怎么办 宝宝小鸡淹了怎么办 小孩的小鸡肿怎么办 小鸡脚趾歪了怎么办 小鸡脖子歪了怎么办 宝宝的小鸡红怎么办 游戏联不了网络怎么办 光敏印章进水了怎么办 照片打印出来黑怎么办 企业股东签名不符怎么办 电脑签字签不了怎么办 刘海的碎发怎么办 车牌号全是单数怎么办 品正通保车险超市怎么办营业执照 车辆咨询服务门市怎么办营业执照 被互盾科技骗了怎么办 家具生意不好怎么办啊 今年家具店生意不好怎么办 奶茶店位置不好怎么办 早餐店位置不好怎么办 木工做的不好怎么办 淘宝昵称改不了怎么办 淘宝店关门售后怎么办 店里生意不好怎么办?解决方案 淘宝店铺没有生意怎么办 淘宝店做大了应该怎么办 汽车维修没生意怎么办 淘宝买家具安装怎么办 投标时未记主材费结算时怎么办 不敢买自慰棒怎么办 车被扎了个洞怎么办 企业欠税交不起怎么办 组织代码查不到怎么办