zoukankan      html  css  js  c++  java
  • 关于MVC使用CodeFirst代码优先来先建实体类中间添加新字段不需要重新建立数据库的方法

    我们拿“MusicStore”这个示例来说 ,我们可以先直接在Artists表中新增CreateTime字段,然后在项目的Artist类中也新增CreateTime字段:public virtual DateTime? CreateTime { get; set; }

    这时如果我们运行程序,因为Artist类中的代码有改动,程序会出现如下错误:

    --------------------------------------------------------------------------------

    The model backing the 'MusicStoreDB' context has changed since the database was created.

     Either manually delete/update the database, or call Database.SetInitializer with an IDatabaseInitializer instance. For example,

     the DropCreateDatabaseIfModelChanges strategy will automatically delete and recreate the database, and optionally seed it with new data.

    用户 'sa' 登录失败。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。

    ---------------------------------------------------------------------------------------

    说数据上下文在数据库创建后发生了改变。

    这时如果我们可以在Global的Application_Start()中取消数据上下文的检查,即将数据初始化设为Null,如:

    Database.SetInitializer<MusicStoreDB>(null);

    则可实现同时修改表和类中字段,而数据不动。

    学习交流群:364976091
  • 相关阅读:
    Object.keys方法
    vue数据绑定原理
    JS控制数字从指定数开始变化
    传入参数和回调取值
    Android contacts content provider学习小结
    Android输入法框架分析(1)-三大组件
    通过Android View的两种事件响应方法比较inheritance和composition
    对象间相互调用时互相控制的几种方法
    immutable和mutable对象
    关于Unicode
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/2886780.html
Copyright © 2011-2022 走看看