我对 CodeFirst 的理解,与之对应的有 ModelFirst与 DatabaseFirst ,三者各有千秋,依项目实际情况自行选择。

1、开发过程中先行设计数据库并依此在项目中生成 *.dbml 或是 *.edmx 文件的,就是DatabaseFirst;

2、开发时先建立空的 *.edmx 文件,由此文件生成数据库的,就是ModelFirst;

3、使用 System.Data.Entity. DbContext 与 System.Data.Entity. DbSet构建数据模型,没有可视化文件,只有实体类的,就是CodeFirst。

现在重点讲解在 CodeFirst 模式下,当你的实体类发生变化时,如何自动更新数据库以及遇到的各类问题。查阅相关资料,支持自动更新的变化有以下几种:

a、增加属性或者类

b、对属性和类重命名(想要使其正常工作,需要编写一些脚本)

c、对列(column)或者表(table)重命名,而不对属性或类重命名

d、删除属性

一、打开程序包管理器控制台

当你的实体模型与数据库架构不一致时,引发以下错误:
The model backingthe 'SchoolContext' context has changed since the database was created.Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269)
百度搜索Code First Migrations,都说要执行命令 Update-Database ,在哪执行呢?继续找呀找,VS.NET的“程序包管理器控制台”出现了,但文章又没说在哪调出这个控制台。我也是初学者,找了半天终于知道它住哪了, “借问Console哪里有?牧童遥指视图中”。VS.NET →“视图”工具栏→其它窗口→程序包管理器控制台

二、安装EntityFramework

打开“程序包管理器控制台”,设置好包含实体模型的项目,执行 Update-Database如果你的项目只有一层,可能不会出现下列错误。我的测试项目把实体模型放在 Mvc4DAL,因此提示“未安装任何程序包。The EntityFramework package is not installed on project'Mvc4DAL'.”

1、右击Mvc4DAL项目→管理NuGet程序包

2、设置好程序包源

在界面中出现“未能解析此远程名称:’nuget.org’”字样,恭喜你,这步你不能跳过。点击左下方的“设置”按钮

右在设置窗口中新建一个程序包源,输入源的 URL “http://157.56.8.150/api/v2/” 勾选启用,点击“确定”

3、安装EntityFramework

选择刚刚新建的“程序包源”,在列表中找到EntityFramework,并安装
 

三、需要置好相关参数

1、设置好数据库连接字串

在项目中,找到 app.config(没有则在项目根目录手动新增,这里的设置只对本项目有效,不会影响到 Web 项目中的设置)。配置 <connectionStrings> 节点,新增 <addname="MyDBConnectString" providerName="System.Data.SqlClient" connectionString="datasource=.;initial catalog=MyDB;user id=sa;password=123456"/> ,Mvc4DAL 用的是名称 MyDBConnectString 的连接字串

publicclassSchoolContext : DbContext

{

publicSchoolContext() : base("MyDBConnectString")

若没有设置好连接字串,或是字串设置有误,将出现如下提示:
Anerror occurred while getting provider information from the database. This canbe caused by Entity Framework using an incorrect connection string. Check theinner exceptions for details and ensure that the connection string is correct.

2、运行命令Enable-Migrations

出现如下提示时,你需要执行 Enable-Migrations:
Nomigrations configuration type was found in the assembly 'Mvc4DAL'. (In VisualStudio you can use the Enable-Migrations command from Package Manager Consoleto add a migrations configuration).

打开“程序包管理器控制台”,运行命令 Enable-Migrations ,Mvc4DAL项目中将出现Migrations文件夹与相应的文件 Configuration.cs

执行 Enable-Migrations 时可能会因为错误而打断,此时需要再次运行加参数的命令Enable-Migrations -Force:
Migrationshave already been enabled in project 'Mvc4DAL'. To overwrite the existingmigrations configuration, use the -Force parameter.

注意“Enable-Migrations”中间没有空格,“-Force”前面必须要有空格。

3、设置 AutomaticMigrationsEnabled为 true

打开Migrations文件夹中的 Configuration.cs,AutomaticMigrationsEnabled默认为 false 改为true就哦了,否则将出现提示:
Unable to update database to match the current model because there arepending changes and automatic migration is disabled. Either write the pendingmodel changes to a code-based migration or enable automatic migration. SetDbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enableautomatic migration. You can use the Add-Migration command to write the pendingmodel changes to a code-based migration.

四、最后执行 Update-Database

上述步骤都设置好了,打开“程序包管理器控制台”,运行命令 Update-Database,没有出错就大功成。这里要注意的是,数据库中有个名称为dbo.__MigrationHistory 的Table很重要,记录的是从创建数据库开始的全部更新的记录,所以在你没有绝对把握的情况下千万别动它。

http://www.cnblogs.com/youfan/articles/3216816.html相关推荐

  1. python自定义分页器()转自https://www.cnblogs.com/yuanchenqi/articles/7652353.html

    """ 分页组件使用示例:obj = Pagination(request.GET.get('page',1),len(USER_LIST),request.path_i ...

  2. ASP.NET:性能与缓存 转帖 张逸老师(http://www.cnblogs.com/wayfarer/articles/48347.aspx)...

    在MSDN网络课堂中下载了一些九月份的网络讲座.有很多还是很有意义的.<ASP.NET系列讲座之一:性能与缓存>是由微软开发工具专家王立楠讲授.王先生的讲解非常清晰,课件也很详细,虽然是网 ...

  3. urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html

    1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=Fals ...

  4. C#获取文件夹/文件的大小以及占用空间 转摘自:http://www.cnblogs.com/chenpeng-dota/articles/2176470.html...

    C#获取文件夹/文件的大小以及占用空间 今天,头给了个任务:写个方法,我会给你个路径,计算这个路径所占用的磁盘空间 . 然后,找了很多资料.但大部分都是获取文件夹/文件的大小的.对于占用空间的没有成品 ...

  5. struct和typedef struct彻底明白了,引用自https://www.cnblogs.com/qyaizs/articles/2039101.html

    struct和typedef struct彻底明白了 struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: t ...

  6. lr_save_string 和 sprintf 的使用 http://www.cnblogs.com/sirrah/articles/2349089.html

    一.lr_save_string 使用介绍 1.该函数主要是将程序中的常量或变量保存为lr中的参数. 格式: //将常量保存为参数 lr_save_string("777",&qu ...

  7. hello cnblogs(从wordpress、收费空间到博客园)

    上学期折腾了半个学期的wordpress和php,css,html搭建了自己的wordpress博客,并与同学一起买了一个不贵的空间挂上博客,本意很简单,只是在闲暇时记录一下学习和生活所得,以便自己回 ...

  8. 【Vegas2010】cnblogs(博客园)排名原来是这样算的~

    在博客园呆了有快4年多了,几乎是每月都有很多文章往上写,但不知怎的,最近博客排名,再也不像以前那样明显的提升了. 查了半天,才发现博客园的排名积分规则是这么定的: 博客排行榜排名分值是如何计算的? 博 ...

  9. web录音的实现 http://www.cnblogs.com/jianyi0115/archive/2008/02/22/1078133.html

    web录音的实现 最近研究了一下web录音程序的实现: 在网页上打开录音程序,录完后自动上传到服务器.利用这种方式实现语言通告,文档评论等功能.                             ...

最新文章

  1. linux基础篇-02,linux时间管理date hwclock cal 简述
  2. 从化工行业转到IT行业
  3. [转载]用数据说话 Pytorch详解NLLLoss和CrossEntropyLoss
  4. Openstack rabbitMQ 安装与配置
  5. 【 CodeForces - 1060B 】Maximum Sum of Digits(思维,构造)
  6. 【今日CV 计算机视觉论文速览 第97期】Tue, 9 Apr 2019
  7. jsp中提供的四种属性范围
  8. 迁移linux系统到新硬盘
  9. JAVA使用pdfbox将pdf转换成图片
  10. VINS-Mono代码阅读笔记(十三):posegraph中四自由度位姿优化
  11. html页面中文本框的光标控制
  12. photoshop中怎么绘制虚线
  13. 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 python实现
  14. 【php图片上传在网页显示】
  15. 抖音最新风控体系研究
  16. java读取word表格中的数据_JAVA获取word表格中数据的方案
  17. 正则表达式元字符 和限定字符
  18. chromosome-territories:染色质疆域简介
  19. java俄罗斯方块(新手版)
  20. 大连理工计算机学硕能调剂到专硕吗,专家提醒:学硕调剂到专硕的注意事项

热门文章

  1. iOS技术篇1-CocoaPods
  2. ios TableView编辑状态多选框的修改
  3. iOS中你可能没有完全弄清楚的(一)synthesize
  4. swift-video-generator:图片加音频生成视频及多视频合并库及演示
  5. wireshark-wincap安装问题
  6. Android笔记之使用LocationManager获取经纬度
  7. 个人项目-小学四则运算 “软件”之初版
  8. Oracle执行计划突变诊断之统计信息收集问题
  9. Remove Duplicates from Sorted Array II -- LeetCode
  10. 百度编辑器(1.4.3—net版)上传图片路径及其他配置