http://www.cnblogs.com/youfan/articles/3216816.html
我对 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的更多相关文章
- 转发自:一像素 十大经典排序算法(动图演示)原链接:https://www.cnblogs.com/onepixel/articles/7674659.html 个人收藏所用 侵删
原链接:https://www.cnblogs.com/onepixel/articles/7674659.html 个人收藏所用 侵删 0.算法概述 0.1 算法分类 十种常见排序算法可 ...
- http://www.cnblogs.com/carekee/articles/1854674.html
http://www.cnblogs.com/carekee/articles/1854674.html http://www.cnblogs.com/xdp-gacl/p/3926848.html
- tcpdump http://www.cnblogs.com/daisin/articles/5512957.html
http://www.cnblogs.com/daisin/articles/5512957.html
- Orace内置函数大全[转:http://www.cnblogs.com/lfx0692/articles/2395950.html]
NewProgramer Oracle SQL 内置函数大全(转) SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数;SQL> select ascii('A') A,a ...
- 分页打印控制 摘自于网络:http://www.cnblogs.com/joinger/articles/1807517.html
代码 style="page-break-after:always;"> 利用CSS控制打印 放在这里,算是一个备份 <style> @media print{ ...
- 我眼中的C#3.0 摘自于网络:http://www.cnblogs.com/joinger/articles/1297237.html
每次有新技术发布时,我们总能感受到两种截然不同的情绪: 一种是恐惧和抵抗,伴随着这种情绪的还有诸如"C# 2.0用的挺好的,为什么要在C# 3.0搞到那么复杂?"或者"我 ...
- [转帖] SQL参数化的优点 CopyFrom https://www.cnblogs.com/-lzb/articles/4840671.html
梦在远方的小猪 感谢原作者... 后面总结的五点感觉挺好的.. 自己之前的知识点一直没有串起来. 转帖记录一下感谢. sql参数化参数化 说来惭愧,工作差不多4年了,直到前些日子被DBA找上门让我优 ...
- urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html
1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=Fals ...
- https://www.cnblogs.com/yuanchenqi/articles/6755717.html
知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景:浏览器,网易云音 ...
随机推荐
- 使用pd设计表的 多对多的中间表的设计方式, 有图有真相
设计多对多表时解决重复问题 目前流行两种设计方式: 方式一 是在中间表中建一个单独的id主键, 与业务表关联的键设置为unique唯一; 干事二: 联合主键的方式, 该方式中间表不会有与业务表无关的主 ...
- Linux操作系统
Linux操作系统 linux源码分析(三)-start_kernel 2016-10-26 11:01 by 轩脉刃, 146 阅读, 收藏, 编辑 前置:这里使用的linux版本是4.8,x86体 ...
- 语音合成,语音播报功能(系统)-b
第一次接触语音合成,只实现了很简单的功能,记录一下,以后免得去网上四处找资料 最近在做高德地图导航的时候有个语音播报的功能,高德sdk已经提供了要语音的字符串.我要做的就是把这些字符串读出声音来即可. ...
- Hadoop的安装与配置说明
安装hadoop是一件非常容易的事情,读者可以在官网上下载到最近的几个hadoop版本.网址为http://apache.etoak.com//hadoop/core/. 目前,hadoop可以运 ...
- 如何在JavaScript里防止事件函数的高频触发和调用
网页中JavaScript最基本的功能是监听或响应用户的动作,这非常的有用.用户的动作有些频率非常高,有的十分罕见.有些监听器函数的执行如闪电般完成,而有些繁重的会把浏览器拖死.拿浏览器窗口的resi ...
- jquery.dragsort实现列表拖曳、排序
在一次工作中需要将功能模块实现拖曳并且排序,并且将排序结果保存到数据库,用户下次登录后直接读取数据库排序信息进行显示.LZ找了好多插件,最后发现 jquery.dragsort 这款插件是最好使用的, ...
- 团体程序设计天梯赛-练习集L1-007. 念数字
L1-007. 念数字 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 翁恺 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先 ...
- leetcode2 Two Sum II – Input array is sorted
Two Sum II – Input array is sorted whowhoha@outlook.com Question: Similar to Question [1. Two Sum], ...
- Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应
原地址:http://blog.csdn.net/onerain88/article/details/11713299 NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以 ...
- install Nagios on Unbuntu Unix
Ubuntu Quickstart Up To: ContentsSee Also: Quickstart Installation Guides, Security Considerations I ...