.Net Core建站(2):EF Core+CodeFirst数据库迁移

news/2024/5/18 13:40:37/文章来源:https://blog.csdn.net/weixin_33830216/article/details/93909449

上一篇的话,说了下怎么使用EF7 实现 CodeFirst去生成数据库,

其实还有好多问题的,这次一点一点的解决吧,都挺简单,不过零零散散的,,

1.读取配置文件,获得链接字符串

2.使用数据库进行增删查改

3.实体类更新后,数据库也更新

 

一、读取配置文件,获得链接字符串

上一篇我们的链接字符串是这样写的

直接写在程序里面是非常非常不好的行为,所以我很简单粗暴的丢到appsettings.json这个配置文件里面去了,,

1 {
2   "Logging": {
3     "IncludeScopes": true,
4     "LogLevel": {
5       "Default": "Warning"
6     }
7   },
8   "ConStr": "server=.;Database=DBCodeFirst;uid=sa;pwd=12346"
9 }

接下来,要愁的是怎么把配置读出来,而且,既然是配置文件,肯定整个项目都要用上,肯定是要封装起来的,

网上也找了很多啊,各种各样的, 有些大佬还可以直接读取成一个对象,这里我不搞那些骚操作啊,,,emmm,不会告诉你们我看不懂的

走最简单的,键值对,就像以前读取webconfig文件一样,

首先需要引用三个包,直接右键编辑commom.csproj

1     <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
2     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
3     <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0" />

然后新建一个类Config

 1 using Microsoft.Extensions.Configuration;
 2 using Microsoft.Extensions.DependencyInjection;
 3 using Microsoft.Extensions.Options;
 4 using System;
 5 using System.Diagnostics;
 6 
 7 namespace Common
 8 {
 9     /// <summary>
10     /// 配置类
11     /// </summary>
12     public class Config
13     {
14         /// <summary>
15         /// 所有的配置数据
16         /// </summary>
17         private static IConfigurationRoot Configuration { get; set; }
18 
19         /// <summary>
20         /// 获得数据
21         /// </summary>
22         /// <param name="_Configuration"></param>
23         public static void SetConfig(IConfigurationRoot _Configuration)
24         {
25             Configuration = _Configuration;
26         }
27 
28         /// <summary>
29         /// 返回对应键的值
30         /// </summary>
31         /// <typeparam name="T"></typeparam>
32         /// <param name="key"></param>
33         /// <param name="def">默认值</param>
34         /// <returns></returns>
35         public static T GetVal<T>(string key, T def = default(T))
36         {
37             try
38             {
39                 def = (T)Convert.ChangeType(Configuration.GetSection(key).Value, typeof(T));
40             }
41             catch (Exception e)
42             {
43                 Debug.WriteLine(e.Message);
44             }
45             return def;
46         }
47 
48     }
49 
50 }

然后还要进行一下配置,在Startup.cs文件的Startup方法改造一下:

1         public Startup(IConfiguration configuration)
2         {
3             IConfigurationRoot config = new ConfigurationBuilder()
4                   .SetBasePath(Directory.GetCurrentDirectory())
5                   .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
6                   .Build();
7 
8             Config.SetConfig(config);
9         }

使用方法很简单的,一句话就好:

1         // 数据库连接字符串
2         string conStr = Config.GetVal<string>("ConStr");

因为现在的配置文件是json格式,所以,层级结构是肯定会有的,比如说,我现在要读取Logging下的IncludeScopes值,可以这样写:

1          string IncludeScopes = Config.GetVal<string>("Logging:IncludeScopes");

以此类推,,,这样肯定没其他大佬们直接读取成对象来得快,不过好在简单易懂,以后等我学会了那种高大上的方法再来分享,,现在先就酱紫用着,,

二、使用数据库进行增删查改

这一段主要是吐槽,,

以前我们使用EF,不管是DBFirst还是CodeFirst,亦或者ModelFirst,要使用数据库都是很简单粗暴的new一个上下文对象

1    // 数据库上下文
2    var DB=new DBCodeFirst();

然鹅!!!!!!!当我用CodeFirst把数据库生成以后,喜滋滋的跑过去加一条测试数据,

1         public IActionResult Index()
2         {
3             DBCodeFirst db = new DBCodeFirst();
4             db.DT_User.Add(new DT_User { UserName = "嘿嘿" });
5             var count = db.SaveChanges();7             return View();
8 
9         }

他丫的给我报错,,,

翻译过来就是这个,,

没有数据库提供商已为这个DbContext。
一个供应商可以通过重写dbcontext.onconfiguring方法或使用adddbcontext对应用服务提供商配置。
如果adddbcontext使用,并确保你的DbContext类型构造函数接受dbcontextoptions < tcontext >对象并将其传递给DbContext基构造函数。”

 反正我是没看懂的,,,永远不知道当时我的心情是多么的难受,

又是一阵百度啊,可算是被我找到解决方法了,,,得这样写:

讲真,我还没接触到依赖注入,所以这段代码看的是有点懵逼的,

好像关联的是Startup这个类里面的ConfigureServices方法,哪位大佬有兴致的话可以给我留言讲讲,感激不尽

不过好歹是可以用数据库了,,下一步是搭一个三层,,一筹莫展ing,,,

以前是可以直接new上下文,现在不行了,还不知道这个依赖注入能不能在其他层使用,,

等我把三层整出来之后,再写出来分享吧,,估计是下一篇了

三.实体类更新后,数据库也更新

这个的话首先回顾上一篇啊,

在上一篇里面用了两个命令来生成数据库(DBLog我改成Init了,,这个随意,,)

 Add-Migration Init
  Update-DataBase Init

如果在上下文中加了实体类或者修改了实体类字段,我们肯定是要更新数据库的,

这个时候,我们在已经生成数据库和Migrations文件夹的前提下,继续使用上面的两个命令

不过这个时候要稍稍改动:

Add-Migration UpData
和
Update-DataBase UpData

记得每次使用的时候,最后一个参数名称千万不能一样

就像我第一次使用的名称是Init 第一次更新数据库的时候,使用的是UpData

以后肯定还会有更多的更新,每次都不能一样,比如:UpData01、UpData02、UpData03、...

同时Migrations文档会对应的增加内容

数据库自动生成的__EFMigrationsHistory表中也会有我们的数据库迁移记录

emmm,差不多就这些吧,,,

我还得想办法把三层整出来,,,,脸滚键盘.gif

 

转载于:https://www.cnblogs.com/Onlooker/p/8097588.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_706418.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美工一流的个人网站源码系列(2),不漂亮你可以不下载!

美工一流的个人网站源码系列&#xff08;2&#xff09;&#xff0c;不漂亮你可以不下载&#xff01; 后台用户名和密码都是admin下载地址&#xff1a;[url]http://down.599cn.com/599cndown/aspdown/soft2/[/url]个人源码2◎[url]www.599cn.com.rar[/url] 转载于:https://blog.…

abv asp是静态网页吗_2019年seo动态网页优化“指南针”

相信那些SEO优化的那些朋友们&#xff0c;肯定还在一股脑的想着如何让自己的网站安静下来&#xff0c;他们都把这一点列入了重中之重的位置。傲马创新营销培训专家不赞成此观点&#xff0c;网站页面是动态还是静态&#xff0c;根据网站实际目的需求来确定就好了。为什么众多SEO…

在SharePoint2007中创建站点一:相关服务的启动

在程序中打开“SharePoint3.0管理中心” 点击“SharePoint3.0管理中心”会弹出要求输入用户名和密码的对话框 输入用户名和密码&#xff08;注意用户名需要是域名加上用户名&#xff09;&#xff0c;点击“确定” 在上图中可以看出&#xff0c;服务器场配置未完成&#xff0c;所…

微软所有正版软件下载网站ITELLYOU

上周上课&#xff0c;从一个学生得知这样一个神奇的网站&#xff0c;汇集了微软出品的几乎所有软件&#xff0c;提供下载。 这是网站的主页&#xff0c;简简单单&#xff0c;就是一个分类。 里面的操作系统栏目&#xff0c;涵盖了DOS6到最新的Windows8.1 with update&#xff1…

【Python爬虫学习实践】基于BeautifulSoup的网站解析及数据可视化

在上一次的学习实践中&#xff0c;我们以Tencent职位信息网站为例&#xff0c;介绍了在爬虫中如何分析待解析的网站结构&#xff0c;同时也说明了利用Xpath和lxml解析网站的一般化流程。在本节的实践中&#xff0c;我们将以中国天气网为例&#xff0c;并基于Beautiful Soup库对…

网站被写入恶意代码的主要原因及防范策略

自2012年5月至今&#xff0c;有大量的网站被挂入恶意的外链代码或者跳转代码&#xff0c;导致了这一批网站因为恶意链接而被百度降权和屏蔽收录。在此&#xff0c;笔者就大多数出现恶意挂马的运行方式及防范策略做一个概论。 第一类纯ASP站或ASP映射HTM/HTML静态站 该类网站需要…

常用网站

it桔子-倒闭的公司 弹钢琴 各大网站热点 抠图 春梅红 摩斯密码 小鸡词典 小霸王 各种雪花 妖魔鬼怪收录 下面是白噪声网站 网址类别https://hipstersound.com人群噪声https://www.rainymood.com/雨声https://asoftmurmur.com雨声 https://tide.fm 雨声http://rainys…

开发者建站免费.或者.收费空间

原文链接&#xff1a;http://www.freehao123.com/2013-top-cloud-hosting/ 2013年十大免费云空间排行榜-给开发者建站用的免费云主机 免费空间 2014年01月29日 17:11 评论 文章目录 EC2弹性云计算谷歌云计算平台Phpcloud云平台GitHub代码托管Uhurucloud平台AppFog云应用 云…

9月第1周国内搜索类网站频道:百度覆盖数创新高

根据国际统计机构Alexa公布的最新数据显示&#xff0c;9月第1周&#xff08;2013-09-02至2013-09-08&#xff09;&#xff0c;国内搜索类网站/频道排行榜中&#xff0c;百度以130300的周均用户覆盖数居于榜首&#xff0c;排行第二的是覆盖数为28200的搜搜&#xff1b; google.c…

【推荐】国外优秀Drupal答疑网站

2019独角兽企业重金招聘Python工程师标准>>> 在做项目的时候&#xff0c;难免会涉及到一些新的功能与新的模块的使用&#xff0c;在国内的使用比较少&#xff0c;而且Drupal官网的资料也不齐全&#xff0c;只是简单的做了介绍&#xff0c;但是在使用Google搜索的过程…

可以获得索引值码_SEO优化可以为网站带来更高的业务销售额

通过SEO优化&#xff0c;创造品牌效应&#xff0c;一个很重要的方面就是提升网站在搜索引擎排名的顶端位置&#xff0c;同时也使排名稳定。很多人说通过竞价排名不容易做到&#xff1f;但竞价排名往往是通过钱&#xff0c;哪个基金足够&#xff0c;就可能失去更好的排名&#x…

java实现网站错别字搜索对的结果_Java问题:根据输入的关键词查询出搜索结果,再将搜索结果中的关键词用红色显示?这个怎么实现?...

类似百度这样&#xff0c;我用Struts做的。Action中的代码&#xff1a;//执行搜索结果&#xff0c;返回LIST〈Product〉集合ListproListproSearchBiz.Search(keyWords);//判断搜索结果是否为空if(proList.s...类似百度这样&#xff0c;我用Struts做的。Action中的代码&#xff…

centos6.5搭建php网站,Centos6.5下搭建web环境(Apache+mysql+php+phpMyAdmin)

转岗以后因为不太熟练一直没有怎么管理服务器&#xff0c;为了后续工作能够顺利展开&#xff0c;决定将之前的服务器重新搭建&#xff0c;并把某些需求整合避免以后管理起来会凌乱。首先先把web环境给搭建起来&#xff0c;以下是搭建过程以作后续查证使用。因为机房实在是太冷了…

将整个网站变灰

2019独角兽企业重金招聘Python工程师标准>>> 为方便站点哀悼&#xff0c;特提供素装代码&#xff0c;以表哀悼。以下为全站CSS代码。 html { filterrogidXImageTransform.Microsoft.BasicImage(grayscale1); } 使用方法&#xff1a;这段代码可以变网页为黑白&#x…

GitHub Pages搭建属于自己的静态网站,并绑定个人域名

1.首先登录Github&#xff0c;新建一个项目&#xff0c;项目的名称为&#xff1a;xxxxxx.github.io xxxxx为自己的用户名 2.在项目中上传一个&#xff0c;index.html&#xff0c;类似下图。因为默认只读取index.html文件 3.点击 Settings 4.先确认一下 这个名字是否正确。…

网站性能优化注意点

网站的性能的指标&#xff1a; 白屏时间首屏时间整页时间DNS时间CPU占用率 一、网络传输性能优化 重定向→拉取缓存→DNS查询→建立TCP链接→发起请求→接收响应→处理HTML元素→元素加载完成。 (1)设置浏览器缓存 去除network面板顶部的Disable cache 勾选&#xff0c;查…

支付宝手机网站支付对接(java)

以下所有的对接都基于沙盒环境&#xff0c;正式环境需要和支付宝进行签约。 发起支付 由用户提交付款信息&#xff0c;包括金额&#xff0c;用户订单号&#xff0c;商品名称&#xff0c;订单描述等信息。 付款流程 扫码付款。 后端通知 付款成功后支付平台会向后台发送一…

利用Axis2默认口令安全漏洞入侵WebService网站

近期&#xff0c;在黑吧安全网上关注了几则利用Axis2默认口令进行渗透测试的案例&#xff0c;大家的渗透思路基本一致&#xff0c;利用的技术工具也大致相同&#xff0c;我在总结这几则案例的基础之上进行了技术思路的拓展。黑吧安全网Axis2默认口令安全弱点利用案例&#xff1…

CentOS/RHEL6.5中使用WordPress快速建站

前言: 本文章转自我的个人博客 http://www.anyisalin.com 欢迎大家访问 WordPress是一种使用PHP语言开发的博客平台&#xff0c;用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站系统&#xff1a;CentOS 6.5使用工具&#xff1a;MySql php httpd phpMyAdmin3.5Word…

MVC与单元测试实践之健身网站(三)-角色与权限

管理员的维护功能完成后&#xff0c;还有权限和角色&#xff0c;三者构成权限系统。这里采用的RBAC是最经典、最简单的一种&#xff0c;权限-角色-管理员只能层层传递&#xff0c;并不能直接为管理员分配权限。 一 权限、角色管理 a) 权限 之前编写好了分页组件&#xff0c;在权…