Database-First,Model-First,Code-first
Posted 我是谁的谁
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Database-First,Model-First,Code-first相关的知识,希望对你有一定的参考价值。
1.Database First是基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件。
2.Model First 这种方式是先利用某些工具(如VS的EF设计器)设计出实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
3.Code First 这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码描述,自动创建数据对象,再去创建ObjectContext或者是DBContext,最终借助ObjectContext或者是DBContext来完成数据库的自动创建。【数据库可以事先存在or不存在】但其实这种方法与Model First是非常类似的。我们自己写的代码,其实就是用代码表示实体模型,而Model First是用可视化的方式描述了实体模型。
优缺点:
Database-First模式可以随时根据数据库更新模型
适合初学者,或者是比较急的小型项目。
Model-First模式优点是开发人员能够在设计模型时完全了解数据库的结构,但是缺点是在模型设计完后,还是需要去手动创建数据库,并且生成的脚本有点不简洁。
Code-First模式有点不用说了,就是上面两个模式的缺点。缺点应该也是有很多的,比如更新数据库
CodeFirst 通过创建DBContext对象来生成数据库
实际开发中难免会修改模型和派生的Context,修改后再次运行会出现异常,提示“支持“MyContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库”异常。
可以通过如下步骤更新数据库,消除上述异常:
1、在项目的“程序包管理控制台"窗口,输入”enable-migrations",回车,导致在项目中生成一个“Migrations"文件夹,其中包含两个.cs类。
2、在1中生成的Configuration.cs中修改构造函数中代码为:”AutomaticMigrationsEnabled = true;“
3、保存修改后,在“程序包管理控制台"中输入”update-database",回车,再次运行即可。
以上是关于Database-First,Model-First,Code-first的主要内容,如果未能解决你的问题,请参考以下文章
使用EF Database-First Application部署ASP.NET Web API
为啥我的 Entity Framework Core Database-First 模型自定义更改在 Re-Scaffold 后消失了?任何解决方案