【Entity Framework】Model First Approach
EF中的model first
所谓mf, 就是使用vs提供的edm designer去设计model,然后将设计好的model使用vs在指定的数据库中生成数据库即可. 当你的项目既没有数据库也没有code的时候, 推荐你在项目中选用model first就行.
先来看个例子
- 打开vs, 新建一个console app,

- 打开nuget找到ef安装到项目上

- add一个ado edm item

此时会出现一个弹出窗口, vs2017会有四个选项如下:

选择empty edm designer. 这是为model first设计的.其他的不是了. - 点击finish之后会看到edmx的设计页面.以及model browser.

- 在diagram页面右键点击选择add一个entity
下图是我创建完成的几个entity

- 创建完设计好的entity之后, 在model browser上右键点击generate database from
model

此时会出现一个弹出窗体, 提示你按照说明配置一个db connection:

- 配置完成后会在项目中生成一个model.edmx.sql的文件, 在vs上直接运行这个文件生成数据库就行了.

- 数据库创建完后如果还需要再次修改entity的edm, 改完再次选择generate db from model就行. DDL文件会被修改, 再次执行文件,就会在对应的数据库中完成修改内容.
- 到此为止model first approach的一个demo就完成了.
model first模式下对于已经部署的数据库的修改
首先说明一点, model first与DB first都没有和code first类似的migration功能.
所以在官网的教程中也提到过以下tip:
"The script that is generated will drop all existing tables and then recreate the schema from scratch. This may work for local development but is not a viable for pushing changes to a database that has already been deployed. If you need to publish changes to a database that has already been deployed, you will need to edit the script or use a schema compare tool to calculate a migration script."
所以一般对于已经部署的数据库, 如果想更改edmx, 那么最好先对数据库进行更改后, 在edmx上右键点击后选择update model from database, 否则你可能会丢失部署环境的数据库中的数据.我觉得就是因为这一点, 很多情况下, 尽量不要选择model first approach.
参考资料
https://docs.microsoft.com/en-us/ef/ef6/modeling/designer/workflows/model-first
【Entity Framework】Model First Approach的更多相关文章
- 【Entity framework】Code First Approach
开篇之前感谢 china_fucan的文章给我的帮助,下面的评论也解决了很多问题同样给予感谢. code first 项目中的ORM框架如果采用的是EF,那么可能会采用code first的方式去使用 ...
- 【Entity Framework】 Entity Framework资料汇总
Fluent API : http://social.msdn.microsoft.com/Search/zh-CN?query=Fluent%20API&Refinement=95& ...
- 【Entity Framework】Revert the database to specified migration.
本文涉及的相关问题,如果你的问题或需求有与下面所述相似之处,请阅读本文 [Entity Framework] Revert the database to specified migration. [ ...
- 【Entity Framework】disable automatic migration, 执行update-migration仍然会显示有automatic migration
本文涉及的相关问题,如果你的问题或需求有与下面所述相似之处,请阅读本文 [Entity Framework] disable automatic migration, 执行update-migrati ...
- 【Entity Framework】初级篇--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍
本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...
- [转]Creating an Entity Framework Data Model for an ASP.NET MVC Application (1 of 10)
本文转自:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/creating-a ...
- 第三篇:Entity Framework CodeFirst & Model 映射 续篇 EntityFramework Power Tools 工具使用
上一篇 第二篇:Entity Framework CodeFirst & Model 映射 主要介绍以Fluent API来实作EntityFramework CodeFirst,得到了大家一 ...
- 第二篇:Entity Framework CodeFirst & Model 映射
前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现 ...
- Entity Framework : The model backing the '' context has changed since the database was created
1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the '' cont ...
随机推荐
- 多线程之批量插入小demo
多线程之批量插入 背景 昨天在测试mysql的两种批量更新时,由于需要入库大量测试数据,反复执行插入脚本,过程繁琐,档次很低,测试完后我就想着写个批量插入的小demo,然后又想写个多线程的批量插入的d ...
- TS的一些小东西
首先介绍下泛型的三种方法,函数声明,函数表达式,箭头函数 function Interview2<T>(name:T):T{ return name } let mn=function&l ...
- mysql limit 性能问题分析
问题重现 // todo 参考文章: MySQL 单表分页 Limit 性能优化 Scalable MySQL: Avoid offset for large tables 证明为什么用limit时, ...
- MongoDB数据导出
在bin目录下(没有设置环境变量), mongoexport -d Structure_Patents_infos -c patents_texts -o D:\Postgraduate\Python ...
- Python学习之旅(十八)
Python基础知识(17):面向对象编程(Ⅱ) 获取对象信息 在不知道对象信息的情况下,我们想要去获取对象信息,可以使用以下方法 1.type (1)判断对象类型 >>> type ...
- python语法_使用占位符进行格式化输出
“%s” 占位符 name = input("name:") age = input("age:") job = input("job:" ...
- IFrame标签的两个用法介绍
1. 作为弹出层铺底覆盖 大家如果做过那种黑色遮罩盖住整张页面,而碰巧用户用的是IE6,更碰巧的是页面上有select元素,那就有得头疼了(原理就不在这里赘述了).我们会发现弹出的DIV没法遮住sel ...
- phpredis Redis阵列 Redis Arrays
官方URL:https://github.com/phpredis/phpredis/blob/master/arrays.markdown#readme 2017年10月29日20:44:01 Re ...
- ES6 数组方法拓展
ES6 数组方法拓展 1.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括E ...
- hive on spark配置
1.安装java.maven.scala.hadoop.mysql.hive 略 2.编译spark ./make-distribution.sh --name "hadoop2-witho ...