EF1:MVC/EF(Entity Framewok) /First Migrations
1. 概念
Entity Framework: ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.(此处只当理解为.NET 特色的数据库应用方案(O/R mapping),如hibernate, 此处暂且不做深入,有待日后补充学习)。简单来说就是微软帮你连接了数据库的是一个实体框架,让你操作起来比较方便,不用过多去写SQLhelper并能和linq语句lamda表达式等结合起来,提高开发效率。
First Migrations: .Net 数据库迁移工具,应用于结合EF进行数据库管理应用。
2.通过项目运行数据库
1.数据库连接配置。项目 web.config中添加数据库连接相关:

<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-2012213181139;Integrated Security=true"
providerName="System.Data.SqlClient"
/>
<add name="MovieDBContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"
/>
</connectionStrings>

2.先构造实体类和上下文关联,如3中类代码。
3.通过项目代码运行private PortalContext db = new PortalContext();自动生成数据库。常见初学教程mvc
通过control 生成示例:

微软 MVC 教程 通过control 模板生成Movie 增删改查相关操作。
注:为了继续学习3中first migrations数据迁移,删除App_data中数据库文件*.mdf.
3. First migrations应用举例
- 生出数据库实体关联
需要先构造实体类(对应表)和上下文关联,代码如下:


using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web; namespace MVCEFTest.Models
{
public class Movie
{
public int ID { set; get; }
public String Name { set; get; }
public Double Price { set; get; }
public int Level { set; get; }
} public class People
{
public int ID { set; get; }
public String Name { set; get; }
public int Year { set; get; }
} public class PortalContext : DbContext
{
//静态构造函数中,设置了当数据库模型发生改变时,则删除当前数据库,重建新的数据库。
//static PortalContext()
//{
// Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>());
//} public DbSet<Movie> Movies { get; set; }
public DbSet<People> Peoples { get; set; }
} }


点击“工具/库程序包管理器/程序包管理控制台”,打开程序包管理控制台:
如果未添加 Entity Framework ,先安装Entity Framework:
PM> Install-Package EntityFramework
执行
PM> Enable-Migrations -EnableAutomaticMigrations
已为项目 MVCEFTest 启用 Code First 迁移。
执行成功,项目中添加了Migrations文件夹,并生成类文件Configuration.cs。代码如下namespace MVCEFTest.Migrations

{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration : DbMigrationsConfiguration<MVCEFTest.Models.PortalContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MVCEFTest.Models.PortalContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
} } }

seed为初始化执行代码,如上可通过 context.People.AddOrUpdate 添加数据。
- 数据数据库实体(O/R mapping)修改
PM> Add-Migration initial
正在为迁移“initial”搭建基架。
此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration 201601120840091_initial”重新搭建基架。
PM>
在Migrations文件夹中生成 201601120840091_initial.cs。

- 数据库同步(数据迁移)

PM> Update-Database -Verbose
Using StartUp project 'MVCEFTest'.
Using NuGet project 'MVCEFTest'.
指定“-Verbose”标记以查看应用于目标数据库的 SQL 语句。
目标数据库为: “MVCEFTest.Models.PortalContext”(数据源: (localdb)\v11.0,提供程序: System.Data.SqlClient,来源: Convention)。
无任何待定的基于代码的迁移。
正在运行seed方法。

4. 错误记录
应用本地sql server 应用实例,生成第一次完成后,删除mdf,重新生成有时会造成,形式各种的数据库链接错误。
大多如,connectstring 错误,*.mdf找不到等,因本地备份遗留或者名称不对应等。可通过“视图/sql server 管理器”删除/增加(如有遗留请删除,如未有重新请添加)操作可解决,已验证:
打开vs2013的sql对象资源管理器,
删除(LocalDb)\v11.0服务器下面已经存在的数据库
(LocalDb)\v11.0如果不存在,就先添加,,再删除它下面的数据库。
EF1:MVC/EF(Entity Framewok) /First Migrations的更多相关文章
- 【MVC 1】MVC+EF实体框架—原理解析
导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- 【MVC 2】MVC+EF框架结构实例:注册ID号验证
导读:本篇博客,将通过一个实例,详细介绍MVC+EF的应用.原理性的东西或者说是进一步的解耦和,请看博客: [框架结构 3]MVC+EF实体框架-原理解析.在这里,仅用MVC框架和一个EF生成的Mod ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片——多对多关系(上篇)
在这章中,我们将学习如何创建一个管理图片的新实体,如何使用HTML表单上传图片文件,并使用多对多关系将它们和产品关联起来,如何将图片存储在文件系统中.在这章中,我们还会学习更加复杂的异常处理,如何向模 ...
- MVC+EF 序列化类型为“System.Data.Entity.DynamicProxies.__的对象时检测到循环引用
用MVC+EF做简单查询时,返回json格式数据出现问题 原代码: public ActionResult JSon({ NorthwindEntities db = new NorthwindEnt ...
- APS.NET MVC + EF (02)---ADO.NET Entity FrameWork
2.1 Entity Framework简介 Ado.net Entity Framework 是Microsoft推出的ORM框架. 2.1.1 什么是ORM 对象关系映射(Object Relat ...
- 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- ASP.NET Core MVC+EF Core从开发到部署
笔记本电脑装了双系统(Windows 10和Ubuntu16.04)快半年了,平时有时间就喜欢切换到Ubuntu系统下耍耍Linux,熟悉熟悉Linux命令.Shell脚本以及Linux下的各种应用的 ...
随机推荐
- 大数据学习——hadoop安装
上传centOS6.7-hadoop-2.6.4.tar.gz 解压 tar -zxvf centOS6.7-hadoop-2.6.4.tar.gz hadoop相关修改配置 1 修改 /root/a ...
- sql通配符+sql中查询条件包含下划线等通配符的写法
一.SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符. SQL 通配符必须与 LIKE 运算符一起使用. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代一个或多 ...
- 让你的 CDN 费用省 50% 以上!图片瘦身的正确姿势
七牛云新推出的图片瘦身功能是做什么的? 打开七牛云的「数据处理」中的「图片瘦身」功能,在图片受到访问时,能够实时对图片进行瘦身,在保证分辨率和画质不变的情况下,可以将图片最高缩小 80%.当「图片瘦身 ...
- Codeforces225B - Well-known Numbers
Portal Description 定义\(k\)-bonacci数列\(\{F_n\}\):\(F_i=0 \ (i<k),F_i=1 \ (i=k),F_i=\sum_{j=i-k}^{i ...
- MT6755 使用R63350 IC 出现唤醒概率性闪白,并导致ESD FAIL
现象描述. 手机自动灭屏后按power键或home 键点亮屏幕,概率性上方有白色的一道,还会闪两三下屏.使用的LCM IC是:r63350, (FHD VDO)屏,附件为mtklog看看是什么原因? ...
- Swift--字典的了解
字典存储时,key和value值的类型都是固定的,且都是无序的. 1.字典类型的缩写语法 在swift中,字典的完整格式如下: Dictionary<Key, Value> 注意:字典的k ...
- linux C 中的volatile使用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存 ...
- IOS开发 AFN和ASI
做项目有一段时间了,项目过程中处理网络请求难免的,而对于选择第三方来处理网络请求肯定是个明智的选择! AFNetworking和ASIHTTPRequest 这两个第三方该如何选择 我 ...
- md5sum使用注意事项
1. linux 命令行的 md5sum命令 echo -n "123456" | md5sum //echo的时候, 默认是自带回车的, 必须要去掉 -n 去掉回车. 2 ...
- CentOS 更改Apache默认网站目录
http://www.osyunwei.com/archives/789.html引言:Apache默认的网站目录是在/var/www/html, 现在要把网站目录更改到/home/wwwroot/w ...