EF6 Code First 博客学习记录
学习一下ef6的用法 这个学习过程时按照微软官网的流程模拟了一下 就按照下面的顺序来写吧
1.连接数据库 自动生成数据库
2.数据库迁移
3.地理位置以及同步/异步处理(空了再补)
4.完全自动迁移(空了再补)
下面就是具体内容介绍
A.连接数据库 自动生成数据库(Code First)
第一步:新建控制台项目CodeFirstNewDatabaseSample 使用nuget管理包下载ef6 appconfg中添加数据库连接字符串

点击下载之后会有弹窗点击我接受 然后vs自动开始下载
接下来配置连接字符串 打开app.config 将连接字符串如下:
<connectionStrings>
<add name="EFDbContext" connectionString="data source=.;initial catalog=CodeFirstDemo;user id=sa;password=******;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient" />
</connectionStrings>
复制进去

接下来 创建模型

接下来创建上下文 这里代码写好之后需要引用命名空间 using System.Data.Entity;
这里需要注意一点 如果你的数据库上下文类的名字和链接字符串名字相同 那么vs会自动匹配
加入不希望两者一样(字符串命名和类名命名规则不一定一样嘛) 那么你需要继承构造函数并且传参如下图:

这里我就用不一样的吧 如果你的连接字符串和类名称一致 直接去掉这个构造函数就行了
接下来 读取/写入数据
main方法中添加如下代码
using (var db = new EF6DbContext())
{
// Create and save a new Blog
Console.Write("Enter a name for a new Blog: ");
var name = Console.ReadLine();
var blog = new Blog { Name = name };
db.Blogs.Add(blog);
db.SaveChanges();
// Display all Blogs from the database
var query = from b in db.Blogs
orderby b.Name
select b;
Console.WriteLine("All blogs in the database:");
foreach (var item in query)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}

好了 准备工作完成 直接运行项目看结果
输入一个姓名张无忌

查看数据库 已经被自动创建 并且里面表拥有数据张无忌

到这里自动创建数据库就已经成功了 接着看如何实现数据库迁移
B数据库迁移
假设现在类Blog需要添加一个字段url
点击nuget包管理器控制台

初始化结束后 输入enable-migrations 按下回车
vs自动生成了一个文件夹 里面有两个类

这里这两个类是实现迁移用的 202004080425245_InitialCreate类是时间戳+字符串命名的 具体有什么用就是一个记录 用来前进后退数据库操作的 就不深究了
接下来在控制台输入add-migration addurl 按下回车
表示我们这次操作时添加一个字段 字段为url addurl 这个名称你可以自己随便取
生成一个类似的类 表示这次操作

接下来再控制台输入update-database 表示应用挂起的迁移 说人话就是将已经准备好的实体变化更新到数据库去
更新前:

输入update-database 按下回车
更新后:

多了一列 结束。
有时候会遇到一个问题 可能项目已经发布 所以不可能在已经发布的系统里面去打开nuget控制管理器做update
因此 这里需要一个自动迁移
这次增加一个新的字段叫访问次数 VisitNum
首先在模型中添加字段VisitNum 这里就不截屏了
接下来上下文的构造函数中添加下面这行代码 这个就是用来应用挂起的迁移

需要引用命名空间:
using CodeFirstNewDatabaseSample.Migrations;
继续控制台输入命令 add-migration addvistnum 回车
这次不用update-database命令 直接启动程序
启动完成

查看数据库

已经更新
这个博客主要是自己学习记录的 如果有不对的地方或请大家提出意见 共同学习
EF6 Code First 博客学习记录的更多相关文章
- android fragment 博客 学习记录
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和 ...
- FPGA一个博客学习
FPGA一个博客学习 http://bbs.ednchina.com/BLOG_PERSONALCAT_100185_2001619.HTM
- CSDN博客排名记录
截止今天,在CSDN的博客排名终于从"千里之外"变成具体的排名数字了.根据CSDN的规则,只有排名在20000以内才能显示具体的排名.从2015年5月11日开始写了第一篇博客.后来 ...
- 头一次玩博客,记录下我的java之路吧
今天写了简单的后台管理系统,发现光靠脑子记住知识真的很难,笔记本不好翻,之前写的代码更难找,所以写写博客,记录一些知识,为了以后上班用得到.
- 用hugo建博客的记录 · 老张不服老
前后累计折腾近6个小时,总算把搭建hugo静态博客的整个过程搞清楚了.为什么用了这么久?主要还是想偷懒,不喜欢读英文说明.那就用中文记录一下过程吧.还是中文顺眼啊. 某日发现自己有展示些东西给外网的需 ...
- 使用django开发博客过程记录3——博客侧栏实现
说起这个侧栏真是苦恼我很长时间,一开始以为和之前的一样传递额外参数就可以了就像下面这样: class IndexView(ListView): template_name = 'apps/index. ...
- 使用django开发博客过程记录4——Category分类视图
在写点击博客的所属分类,显示所有该分类的文章时真是让我想了好一会,为什么呢?因为我使用的是cbv模式开发的而不是简单的视图处理逻辑的,所以,有些操作会被包装好了,你并不知道它的细节,那么我们今天要实现 ...
- django参考博客学习
网上发现其他人的一个django系列博客,和我学的一样是黑马的,写的挺不错的,转载学习一下 https://blog.csdn.net/u014745194/article/category/6989 ...
- 使用 vue + thinkjs 开发博客程序记录
一入冬懒癌发作,给自己找点事干.之前博客程序写过几次,php 的写过两次,nodejs 用 ThinkJS 写过,随着 ThinkJS 版本从1.x 升级到 2.x 之前的博客程序也做过升级.但是因为 ...
随机推荐
- java安全编码指南之:lock和同步的正确使用
目录 简介 使用private final object来作为lock对象 不要synchronize可被重用的对象 不要sync Object.getClass() 不要sync高级并发对象 不要使 ...
- 【原创】Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...
- TMS, XYZ & WMTS的不同
WMS是OGC定义的协议,用于请求任意区域的渲染地图图像.客户可以根据需要以平铺模式对其进行请求. WMS-C是OSGeo创建的WMS扩展,它向功能文档中添加了元数据,以使客户端知道在哪里发出请求,从 ...
- JavaScript高级程序设计(第4版)pdf 电子书
JavaScript高级程序设计(第4版)pdf 电子书 免责声明:JavaScript高级程序设计(第4版)pdf 电子书下载 高清收集于网络,请勿商用,仅供个人学习使用,请尊重版权,购买正版书籍. ...
- 网易新闻精彩评论集合(慢慢收集ing)
一.刚才在停车场看一男的开个Q7,怎么也停不进去.我迅速把车停好要过去帮忙,他死活不同意.我说,你刚也看见了我的停车技术了,肯定不能给你刮了.他干脆把窗户摇上了.如今的社会啊,人与人的互信程度为什么就 ...
- 2014年 实验三 B2B模拟实验(一)
[实验目的] ⑴.熟悉企业网络银行和电子证书的应用 ⑵.通过B2B模拟实验掌握B2B的交易过程 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网 (3).电子商务模拟实验室软件包. ...
- Markdown语法及使用方法完整手册
欢迎使用 Markdown在线编辑器 MdEditor Markdown是一种轻量级的「标记语言」 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容 ...
- java 画 哆啦A梦
package Demo;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;impo ...
- centOS7 查看防火墙状态 开放端口
一.防火墙的开启.关闭.禁用命令 (1)设置开机启用防火墙:systemctl enable firewalld.service (2)设置开机禁用防火墙:systemctl disable fire ...
- centos8平台安装redis6.0.1
一,redis的官网: https://redis.io/ redis6于5月3日正式发布,它的新增功能: acl 多线程io cluster proxy resp3协议 本文演示redis6.0.1 ...