前面我们已经介绍过EF中Code First开发模式,简而言之,就是不管三七二十一直接写代码,不过对于很多开发人员来说,可能并不习惯这样来开发,并且安装标准的开发流程,应该是先建模再进行编码,当然EF也是支持这样做的,那我们今天就简单介绍一些现有模型的开发模式——Model First。

  

  具体步骤如下:

  1. 新建一个控制台程序,叫做“EF.ModelFirstSample”。

  

  2.安装EF,因为我们之前已经安装了EF,所以打开NuGet包管理器界面直接安装到新的工程中,如果没有安装,要自己去安装。

  

  3.创建模型

   新增“现有项”,选中“数据”下的“ADO.NET实体数据模型”。

  

  从打开的窗体中,选择“空EF设计器模型”。

  

  完成之后,我们就可以看到EF的模型设计器面板,右键,新增实体,输入如下信息:

  

  选中Blog实体,右键添加两个属性,分别为Name和Url,完成之后如下:

  

  参照上述步骤,新增Post实体,并且添加Title和Content属性,再在设计面板上右键为Blog和Post实体增加关联关系,如下:

  

 

  4.生成数据库

  至此,我们的简单模型已经设计好,现在可以在设计面板右键,点击“根据模型生成数据库”

  

  在弹出的窗体中配置好连接的数据库

  

  一切顺利的话,点击“下一步”,此时就可以看到建表语句了,如下图:

  

  点击完成之后,我们可以在vs新打开的窗体中可以看到最终生成SQL语句,这个时候只是生成了SQL语句,但是并没有真正执行,还需要手动点击一下执行:

  

  OK,我们的模型已经成功创建。

  

  5.读写测试

  我们已经有了模型,并且基于此模型已经生成好了数据库,现在可以根据这个模型进行读写操作。

  下面代码,主要是向Blog表中插入一条数据,并且读取出来,具体代码实现如下:

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EF.ModelFirstSample
{
class Program
{
static void Main(string[] args)
{
using (var db = new BlogModelContainer())
{
var blog = new Blog { Name = "test Name",Url="testUrl" };
db.BlogSets.Add(blog);
db.SaveChanges(); var query = from b in db.BlogSets
orderby b.Name
select b; foreach (var item in query)
{
Console.WriteLine(item.Name);
} Console.ReadKey();
}
}
}
}

  运行之后我们去数据库查看,可以发现已经成功添加了一条记录,并且成功读取。

  

  6.处理模型改变

  Model First模式下的模型改变之后,只需要在设计面板中右键点击“根据模型生成数据库”,和之前生成数据库一样,生成脚本之后要手动执行。

  

  如上是为Blog增加一个Author属性,更新的数据库Blog中可以看到多出一个Author字段。

  

ORM系列之二:EF(5) Model First的更多相关文章

  1. ORM系列之二:EF(1)

    目录 1. EF是什么 2. 如何获取EF 3. EF有哪些主要模式 EF是什么 EF全称为Entity Framework,是微软推荐的一种数据库访问技术,属于重量级的ORM框架,功能非常强大,目前 ...

  2. ORM系列之二:EF(4) 约定、注释、Fluent API

    目录 1.前言 2.约定 2.1 主键约定 2.2 关系约定 2.3 复杂类型约定 3.数据注释 3.1 主键 3.2 必需 3.3 MaxLength和MinLength 3.4 NotMapped ...

  3. ORM系列之二:EF(3) 数据库连接

    目录 1.前言 2.Code First默认连接 3.Code First指定数据库 4.自定义连接 前言 在介绍EF的Code First模式时候,我们没有修改任何配置,运行之后自动在LocalDb ...

  4. ORM系列之二:EF(2)Code First

    目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...

  5. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  6. ORM系列之Entity FrameWork详解

    一. 谈情怀 从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是[SQL语句+ADO.NET],那时候,什么存储过程.什么事务 统统不理解,生硬的将SQL语句传入SQ ...

  7. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  8. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)

    在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...

随机推荐

  1. Bootstrap Fileupload 文件上传

    1.在jsp中引入css与js文件, <link href="${ctx}/plugins/fileup/css/fileinput.css" media="all ...

  2. [python面向对象]--基础篇

    1.#类 #类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 #定义一个类 class bar: def foo(self,agr): print(self,agr) obj = bar() ...

  3. mysql知识

    1.Limit 在语句的最后,起到限制条目的作用 Limit [offset,] [N] offset:偏移量 N:取出条目 例子:select * from stu limit 3,3; 2.左连接 ...

  4. 使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  5. MongoDB在Windows下安装、Shell客户端的使用、Bson扩充的数据类型、MongoVUE可视化工具安装和简单使用、Robomongo可视化工具(2)

    一.Windows 下载安装 1.去http://www.mongodb.org/downloads下载,mongodb默认安装在C:\Program Files\MongoDB目录下,到F:\Off ...

  6. flume到kafka和hbase配置

    # Flume test file# Listens via Avro RPC on port 41414 and dumps data received to the logagent.channe ...

  7. Win10 UI入门窗口由默认500px to 320px

    https://code.msdn.microsoft.com/Layout-for-windows-that-ba648e1c/ https://msdn.microsoft.com/library ...

  8. AutoMapper搬运工之自定义映射

    回顾 上节说到了AutoMapper的简单使用,对于复杂的Mapping需要强大的自定义,这节我们来看下AutoMapper的自定义Mapping(Projection) 搬运自Git:https:/ ...

  9. 数字转IP地址函数

    --------------------------------------------------------------------- -- Author : htl258(Tony) -- Da ...

  10. Java集合---Array类源码解析

    Java集合---Array类源码解析              ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...