zoukankan      html  css  js  c++  java
  • 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",回车,再次运行即可。

  • 相关阅读:
    Android自定义Dialog效果
    Attempt to invoke virtual method 'void android.app.ActionBar.setTitle的解决方法
    Android 震动 和 停止 代码
    任意手机虚拟按键增加方法
    [vijos]1066弱弱的战壕<线段树>
    [bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>
    [bzoj]1053反质数<暴搜>
    [codevs]1250斐波那契数列<矩阵乘法&快速幂>
    [codevs2597]团伙<并查集>
    [noip模拟赛]虫洞holes<SPFA>
  • 原文地址:https://www.cnblogs.com/xiaoweigogo/p/7799535.html
Copyright © 2011-2022 走看看