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
  • 相关阅读:
    - viewDidLoad 和
    C#实现excel导入到sql server 2008(.net版)
    Windows PE 第十章 加载配置信息
    Windows PE第九章 线程局部存储
    Windows PE第九章 线程局部存储
    Windows PE 第八章 延迟加载导入表
    Windows PE 第八章 延迟加载导入表
    Windows PE资源表编程(枚举资源树)
    Windows PE资源表编程(枚举资源树)
    欺骗的艺术-读后总结
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/2886780.html
Copyright © 2011-2022 走看看