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


    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(" 随笔标题:{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);
    }
    }
    }
    复制代码

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

  • 相关阅读:
    jenkins 常用插件和配置项介绍和使用
    spring 3 mvc hello world + mavern +jetty
    七牛是如何搞定每天500亿条日志的 转
    Mysql 索引 转载
    互联网运营:一场怡红院中的战争 转
    hadoop-2.7.0
    flume
    Storm0.9.4安装
    Ubuntu里面的安装命令总结
    Apache Kafka 分布式消息队列中间件安装与配置 转载
  • 原文地址:https://www.cnblogs.com/Alex80/p/5141071.html
Copyright © 2020-2023  润新知