【Entity Framework】Model First Approach

EF中的model first

所谓mf, 就是使用vs提供的edm designer去设计model,然后将设计好的model使用vs在指定的数据库中生成数据库即可. 当你的项目既没有数据库也没有code的时候, 推荐你在项目中选用model first就行.

先来看个例子

  1. 打开vs, 新建一个console app,
    【Entity Framework】Model First Approach
  2. 打开nuget找到ef安装到项目上
    【Entity Framework】Model First Approach
  3. add一个ado edm item
    【Entity Framework】Model First Approach
    此时会出现一个弹出窗口, vs2017会有四个选项如下:
    【Entity Framework】Model First Approach
    选择empty edm designer. 这是为model first设计的.其他的不是了.
  4. 点击finish之后会看到edmx的设计页面.以及model browser.
    【Entity Framework】Model First Approach
  5. 在diagram页面右键点击选择add一个entity
    下图是我创建完成的几个entity
    【Entity Framework】Model First Approach
  6. 创建完设计好的entity之后, 在model browser上右键点击generate database from
    model
    【Entity Framework】Model First Approach
    此时会出现一个弹出窗体, 提示你按照说明配置一个db connection:
    【Entity Framework】Model First Approach
  7. 配置完成后会在项目中生成一个model.edmx.sql的文件, 在vs上直接运行这个文件生成数据库就行了.
    【Entity Framework】Model First Approach
  8. 数据库创建完后如果还需要再次修改entity的edm, 改完再次选择generate db from model就行. DDL文件会被修改, 再次执行文件,就会在对应的数据库中完成修改内容.
  9. 到此为止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

上一篇:HTML5兼容IE各版本的写法


下一篇:通配符的匹配很全面, 但无法找到元素 'tx:annotation-driven' 的声明