EF中的model first

先来看个例子

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

model first模式下对于已经部署的数据库的修改

首先说明一点, model first与DB first都没有和code first类似的migration功能.
所以在官网的教程中也提到过以下tip:

所以一般对于已经部署的数据库, 如果想更改edmx, 那么最好先对数据库进行更改后, 在edmx上右键点击后选择update model from database, 否则你可能会丢失部署环境的数据库中的数据.我觉得就是因为这一点, 很多情况下, 尽量不要选择model first approach.

参考资料

https://docs.microsoft.com/en-us/ef/ef6/modeling/designer/workflows/model-first

05-11 09:29