前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/O是很大的瓶颈.其中数据库的I/O最容易成为限制系统效率的一环.在优化数据库I/O这一环中,可以从优化系统调用数据库效率.数据库自身效率等多方面入手. 一般情况下,通过升级数据库服务器的硬件是最容易达到的.但是服务器资源不可能无限扩大,于是从调用数据库的效率方面入手是目前主流的优化方向. 于是读写分…
前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模式我不打算讲了. 如果大家看了文章感觉完全衔接不上,可以先看看前面的系列文章: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离 EF core (code first) 通过自定义 Migr…
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是什么: 在目前的to B的系统中,其实往往会有一个Master数据库,里面使用的是系统中主要的数据,各个租户的数据,往往只是对应的订单.配置.客户信息. 这就造成了,租户的数据不会有很多的种类,他的数据表的数量相对Master来说还是比较少的. 所以在单一租户数据量没有十分庞大的时候,就没有必要对单…
0. 前言 通过前两篇,我们创建了一个项目,并规定了一个基本的数据层访问接口.这一篇,我们将以EF Core为例演示一下数据层访问接口如何实现,以及实现中需要注意的地方. 1. 添加EF Core 先在数据层实现层引入 EF Core: cd Domain.Implements dotnet add package Microsoft.EntityFrameworkCore 当前项目以SqlLite为例,所以再添加一个SqlLite数据库驱动: dotnet add package Micros…
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用   本文是对<Entity framework in action>部分章节的翻译,某些场景也会附上笔者实践的Demo.尽管很认真的斟酌,但是水平有限,还请各位批评和斧正.   Entity Framework Core, 或者 EF Core,是一个方便软件工程师访问数据库的库.有很多方法来构建这样的一个库…
系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询   本章主要介绍如何使用EF Core进行数据库读取,俗称查询.您将创建一个数据库,它包含EFCore中三种主要数据库关系类型.在这个过程当中,你将学会使用EF Core 创建和改变数据库的结构.   接下来你将学习到如何使用EF Core访问数据库并从数据库表中获取数据.在查看用主数据加载相关数据的各种…
小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也知道他喜欢一发工资就去银行存起来,担心小刘卡里存的钱太多拿去"大宝剑",于是,也去了银行,想趁着小刘把钱存进去后就把钱给取出来,省的夜长梦多. 小刘与刘嫂取得是两家不同的银行的ATM,所以两人没有碰面. 小刘插入银行卡存钱之前查询了自己的余额,ATM这样显示的: 与次同时,刘嫂也通过卡号和…
前段时间听过一个关于使用ASP.NET Core建立项目的视频.其中使用EF Core映射到数据库的部分是按部就班地学习.今天自己建立项目时,有些步骤已经有一些遗忘.所以写下这篇文章,顺便理清思路. 新建项目后: 1.Models文件夹下建立实体类,如User public class User { public int Id { get; set; } public int Account { get; set; } public int Password { get; set; } } 2.…
前言 不知道大家是否和我有同样的问题: 一般在数据库的设计阶段,会制定一些默认的规则,其中有一条硬性规定就是一定不要对任何表中的数据执行delete硬删除操作,因为每条数据对我们来说都是有用的,并且是值得分析的. 所以我们一般会在每张表中加一个"是否删除IsDeleted"或者"是否有效IsValid"的字段,来标识这条数据的状态是否可用! 那么疑问来了,在写SQL或者Linq的时候我们到底是要加上这个条件还是忽略这个条件呢?答案当然是根据实际业务需求和情况来决定.…
更新 : 2018-11-26 这里记入一下关于 foreignKey cascade action 默认情况下如果我们使用 data annotation required + foreginkey . ef 会帮我们设计成 cascade delete 如果 foreignkey + nullable 就会是 cascade restrict. 如果使用 fluent api 的话就由我们设计了. ef 6.x 有一个功能可以把所有的 cascade delete 停掉, ef core 不…
ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏读. 但是呢, 有时候我们希望拥有更好的隔离级别, 比如 repeatable read, serializable 那么就需要调用 database.beginTransaction 了. 一旦需要自己控制 trans 麻烦就跟着来了. 比如在多个服务嵌套调用时, 如何共享 trans 呢 ? 每…
更新: 2019-12-23 foreignkey 并不一样要配上 alternate key,其实只要是 unique 就可以了. 和 sql server 是一样的, 经常有一种错觉 primary key = foreignkey 所以只能有 1个 column 但是很多时候用多个 column 来约束对业务的管理是有帮助的. 所以其实只要是 unique, 不管多少 column, 都是拿来作为其它 table 的 foreignkey relation. modelBuilder.En…
背景 话说有这么一家子,老公养了一条狗,老婆养了一只猫. 数据库的设计 人表 宠物表 通过表可以知道,宠物通过Owner指向主人的Id. 问题来了,我要和故事开头一样,老公-狗,老婆-猫,对应起来,怎么查询呢? 有同学说这还不简单?两个遍历一下不就行了. 首先 取出 List<宠物>集合,再根据宠物的主人Id去查找对应的主人信息就好了. 如果这样设计,那么将会执行3次查询: l  查出所有的宠物. l  查出阿猫的主人. l  查出阿狗的主人. 数据量不大还好,数据量要是大一点这是非常影响速度…
如果你使用命令: PM> add-migration Inital 提示如下信息时: The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.4-rtm-31024' 解决方法大致一下几种: 第一 最近在跟着官方的文档学习 .NET Core . 在写 “创建 Razor 页面 Web 应用” Demo 中的——“添加模型”这一篇的教程,“添加初始迁移”中遇到 “The EF Core…
EF Core CRUD 上篇文章中,我们已经基本入门了EFCore,搭建了一个简单的EFCore项目,本文开始简单使用下EF,做增删改查的相关操作: 一.数据新增操作(C) public static async void Insert_测试新增数据1() { var myDbContext = new MyDbContext(); if (myDbContext.TestTables.Any(p => p.Id == 1)) return; var newEntity = new TestT…
引言 年初研究了一阵子.net core跨平台应用,先后发表了几篇应用研究的文章.因工作原因,忙于项目上线,有一阵子没来博客园写文章了.最近项目基本收尾,抽空翻了下自己的博客,廖廖几篇文章,真让人汗颜. 近半年来,实施项目的是完全基于.net core进行开发,部署运行于ARM Cortx-A7芯片上的嵌入式Linux系统中,直接原生应用部署,是一个典型的跨平台开发应用.项目实施中,也积累了不少跨平台应用的心得,拟抽空将一些与项目业务无关的内容进行整理分享,以期对各位使用.net core平台开…
在日常系统工作中,我们为了洞察系统的问题和运作情况通常会记录日志的方式来进行分析,但是在很多情况下都是被动的在出问题后才会去查日志.在很多时候,我们可能更需要相对实时的了解整个系统或者某一时段的运行的情况,诸如系统出错的频率以及响应时间等等指标.这些动态的准实时信息对于监控整个系统的运行和健康状况非常重要,而本文的主角们能通过很好的配合帮助你实现这个目标,而且是一种高大上的实现方式.想想泡杯茶翘着二郎腿看着偌大的屏幕上有着一堆华丽的仪表和曲线图,即使看不懂也很牛B的样子啊!(谁知道我看得懂看不懂…
Swagger简介: Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能.当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑.类似于低级编程接口,Swagger去掉了调用服务时的很多猜测. 创建一个Asp.Net Core WebApi项目. 想要使用我们的Swagger你必须有Api,所以呢我们先构造一个数据库,当然我们可以使用DbFist,我们…
概述 Prometheus的主要特点 组件 结构图 适用场景 不适用场景 安装node_exporter,系统性能指数收集(收集系统性能情况) 下载文件 解压并复制node_exporter应用程序到/usr/local/bin 清理下载的文件和解压的文件夹 添加自启动服务 添加服务配置文件 写入配置内容 node_exporter收集性能点的配置 启动服务并配置自启动 prometheus的安装 添加prometheus专用的用户名 添加prometheus的目录 文件夹授权 下载并解压pro…
⒈创建数据库,在数据中执行以下脚本. CREATE DATABASE Blogging; USE Blogging; CREATE TABLE Blog ( BlogId int not null PRIMARY key auto_increment, Url text not null ); CREATE TABLE Post ( PostId int NOT NULL PRIMARY key auto_increment, BlogId int NOT NULL, Content text,…
⒈添加依赖 MySql.Data.EntityFrameworkCore ⒉在appsettings.json配置文件中配置数据库连接字符串 { "Logging": { "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "MySqlConnection": "server=localhost;port…
在以往开发中,一定要在vs中安装SQLite for Universal App Platform以及一款wrapper,如SQLitePCL.现在有了EntitfyFramewrok Core,我们可以更方便的操作SQLite数据库了. 准备 Nuget包,EntityFramwork.SQLite和EntityFramework.Commands,目前是预览版…
最近一直在捣鼓.NET Core方面的东西,顺便写下点东西记录下 1.打开vs2017,新建一个项目 2.vs会自动生成一个项目,然后打开NuGet搜索MySql.Data.EntityFrameworkCore下载 3.然后在Models下面新建一个Student类,然后再新建一个类继承DbContext类 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; u…
HtmlAgilityPack应该算是.Net下最好用的html解析库了. 因为最近帮朋友采集一些数据,在nuget里面搜索了好几个库,最后决定就用HtmlAgilityPack.并简单的记录下使用的姿势. 直接使用nuget包安装 Install-Package HtmlAgilityPack -Version 1.下载网页 该库提供了一个下载网页的类:HtmlWeb var webGet = new HtmlWeb(); var document = webGet.Load(url); 如果…
先安装以下三个包: Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design 然后包管理控制台默认项目切换到相应项目,运行: Scaffold-DbContext "Data Source=192.168.110…
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linux5588.blog.51cto.com/65280/772054 拓扑图如下: 可以有多个目标服务器,本机同步也可以(要同时开sersync服务和rsync守护进程) 需求: 1.源服务器上 要备份的是/data/bookfm/doc/book 目录包括子目录下的original.xxx ,其他文件不备份 2.备份服务器上 备份的路径/backup/bookfm ,当然…
前言 写这篇文章的原因,其实由于我写EF core 实现多租户的时候,遇到的问题. 具体文章的链接: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离   (主要关联文章) 这里我遇到的最主要问题是:由于多租户的表使用的是同一个数据库.由于这个原因,无法通过 Database.EnsureCreated() 自动创建多个结构相同但名字不同的表. 所以我在文中提到,需要自己跑脚本去创建多有的…
前言 本文是多租户系列文章的附加操作文章,如果想查看系列中的其他文章请查看下列文章 主线文章 Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离 Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作   (强关联文章,建议先阅读) 附加文章 EF core (code first) 通过自定义 Migration…
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Framework Core 1.0 也已经发布了,可以适用于 .NET Core 1.0 及ASP.NET Core 1.0 . EF Core RC2 时,使用的Code First: http://www.cnblogs.com/linezero/p/EntityFrameworkCore.html E…
ASP.NET Boilerplate 学习   1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: 3.在AbpTest.Web.Host项目的appsettings.json中配置数据库连接字符串 新建名为AbpTestDb的空白数据库,在NuGet包管理控制台 执行    Update-Database  命令,初始化数据库 4.运行应用程序将看到Swagger生成的API接口页面 AspN…