ORM系列之二:EF(4) Model First

  前面我们已经介绍过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.BlogSetsorderby b.Nameselect b;foreach (var item in query){Console.WriteLine(item.Name);}Console.ReadKey();}}}
}

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

  

  6.处理模型改变

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

  

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

  

ORM系列之二:EF(4) Model First相关推荐

  1. 自定义ORM系列(三)工具雏形及基本用法

    引言 本篇给大家介绍我这个工具的雏形结构,以及基本的用法,还请大家多提意见. 初看起来,这个有点像NHibernate.说到这里,肯定有人要拍砖了.其实,我也知道.我这个不入流的东西,和NHibern ...

  2. ORM系列之Entity FrameWork详解

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

  3. 【转】ORM系列之Entity FrameWork详解

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

  4. 《解剖PetShop》系列之二

    PetShop数据访问层之数据库访问设计 <解剖PetShop>系列之二 二.PetShop数据访问层之数据库访问设计 在系列一中,我从整体上分析了PetShop的架构设计,并提及了分层的 ...

  5. [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店...

    原文:[.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店 一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Bytear ...

  6. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾

    前段时间,YOLOv4&v5大火,很多人忽视了yolov5在anchor上的一些细节变化,因此,本文从Faster RCNN着手,逐步分析SSD.YOLOv4&v5的anchor机制. ...

  7. html中地图的绘制toolbars,tkinter内嵌Matplotlib系列(二)之函数曲线绘制

    目录 前言 前一章节,我们解读了tkinter内嵌Matplotlib的教程,了解其内嵌的原理,就是在tkinter创建matplotlib的画布控件,再利用其返回的画布对象进行绘图,其他附加功能,使 ...

  8. MongoDB实战系列之二:MongoDB的常用操作

    #以服务方式启动mongodb,要求验证 /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/ ...

  9. 配分函数|机器学习推导系列(二十六)

    一.概述 对于有向概率图模型来说,由于图中存在天然的拓扑排序关系,所以有向概率图的因式分解的形式很容易写出来.而对于无向图来说就需要根据它图中的最大团来写成一个因式分解的形式,无向图模型在局部并没有表 ...

最新文章

  1. Shell脚本实现生成SSL自签署证书
  2. Serverless 的喧哗与骚动(一)附Serverless行业发展回顾
  3. 剪切粘贴时总是上次的内容_自学PS:拷贝与粘贴都有哪些方法?编辑信息时错误了怎样恢复?...
  4. 微软VDI动手实验之应用模型及部署攻略
  5. 数据源(连接池)的作用
  6. .net mysql-connector-net连接mysql
  7. Java NIO原理图文分析及代码实现
  8. 【Flink】ERROR - Exception occurred in REST handler: Job xxx not found
  9. mysql视图什么时候用_Mysql为什么要使用视图?
  10. iOS应用审核的通关秘籍
  11. Selenium WebDriver 与 iOS 自动化测试 (做了一些初步的工具对比)
  12. Atitit 建立新组织集团模型的框架基本制度与一些原则
  13. IEEE ACCESS 模板中字体颜色与caption包冲突解决办法
  14. GB28181国标平台资料整理
  15. 睡眠多少分钟一个循环_睡眠分多少阶段
  16. YOLO v5与双目测距结合,实现目标的识别和定位测距
  17. 计算机软件服务费入哪个科目,软件服务费计入什么科目?
  18. 照片放大工具Topaz Gigapixel AI for Mac
  19. Macbook如何更换固态硬盘【亲测有效】
  20. STM8S103之tim1PWM输出

热门文章

  1. 搭建人工智能云服务器,搭建人工智能云连接,实现手机APP远程控制
  2. @Transactional子事务单独提交
  3. 机器学习-聚类PPT
  4. 亿推推微分销-最具口碑的微信分销公众平台,欢迎各位商家入驻!
  5. Matlab四维矩阵
  6. Jenkins 贡献者线上峰会 - 二月 23 日至 25 日
  7. 计算机网络如何促进幼儿教师专业发展,新学期计算机网络实训报告范文与新幼儿教师的述职报告合集.doc...
  8. 首届全国智能制造(中国制造2025)创新创业大赛
  9. echarts雷达图文字不显示_ECharts雷达图指示器名称的设置
  10. 3S基础知识:MapInfo点符号的制作方法