AspNet Core :创建自定义 EF Core 链接数据库
这两天比较忙,写的会慢一点。
我们以控制台演示 EF Core的链接数据库
首先创建控制台程序

创建数据上下文类
EntityTable
/// <summary>
/// 继承 DbContext 数据上下文类
/// 命名空间 using Microsoft.EntityFrameworkCore;
/// </summary>
public class EntityTable : DbContext
{ //在DbContext的构造函数中我们可以接受一个DbContextOptions对象,
//这个主要用在当在DI容器中创建DbContext实例时会用到,当然它也能被显式调用,通过创建DbCOntextOptions对象来与上下文隔离
//所以用它可以为每一个上下文的实例使用相同的options,如下:
public EntityTable(DbContextOptions options) : base(options)
{ }
public DbSet<User> User { get; set; }
}
public class User
{
[Key]
public int ID { get; set; }
public String Name { get; set; }
public String Age { get; set; }
}
新建Json配置文件:注意一定要把 Json文件属性改为“始终复制“不然重新生成是Debug文件不会生成,程序读取不到
Json 内容
{
"ConnectionStrings": {
"SqlServer": "Data Source=DESKTOP-O9UM2R2;Initial Catalog=FirstDB;Persist Security Info=True;User ID=sa;Pwd=su;"
}
}
读取Json 文件 链接数据库 读取User表数据

var BuilderAppStting = new ConfigurationBuilder();
BuilderAppStting.AddJsonFile("json1.json");//加载Json文件
//取出所有配置节点Key
var Configuration = BuilderAppStting.Build();
//重新创建生成数据上下文EntityTable 类的实例
var builder = new DbContextOptionsBuilder<EntityTable>();
//这里的读取配置的方法 把GetSection的工作一次性做完 关于 GetSection在上一篇文中已经体现过
builder.UseSqlServer(Configuration.GetConnectionString("SqlServer"));
//如果数据库不存 重新实例化 数据上下文类
// EFConfigProvider eFConfigProvider = new EFConfigProvider(builder);
using (var dbContext = new EntityTable(builder.Options))
{
// Migrate() 将上下文的任何挂起的迁移应用到数据库。将创建
//如果还不存在数据库,则为数据库。
//请注意,此API与DbContext.Database.EnsureCreated()互斥。
//EnsureCreated不使用迁移来创建数据库,因此
//创建的数据库以后不能使用迁移更新。
dbContext.Database.Migrate();
// EnsureCreated()确保上下文的数据库存在。如果存在,则不进行操作
//拿.如果不存在,则创建数据库及其所有模式。
//如果数据库存在,则不必努力确保它与
//此上下文的模型。
//注意,此API不使用迁移来创建数据库。此外,
//创建的数据库不能使用迁移稍后更新。如果你
//针对关系数据库和应用迁移,你可以使用DbContext migrate()。数据库。
//方法以确保创建数据库并应用所有迁移。
//dbContext.Database.EnsureCreated();
User ss= dbContext.User.Where(x => x.ID == ).SingleOrDefault();
dbContext.User.ToList().ToString();
读取第一条数据

项目中还有两个类 总感觉描述的不是很清晰 包括另一种实现EF的方式 还需要加强。
AspNet Core :创建自定义 EF Core 链接数据库的更多相关文章
- Abp vNext 自定义 Ef Core 仓储引发异常
问题 在使用自定义 Ef Core 仓储和 ABP vNext 注入的默认仓储时,通过两个 Repository 进行 Join 操作,提示 Cannot use multiple DbContext ...
- EF Core 快速上手——EF Core的三种主要关系类型
系列文章 EF Core 快速上手--EF Core 入门 本节导航 三种数据库关系类型建模 Migration方式创建和习修改数据库 定义和创建应用DbContext 将复杂查询拆分为子查询 本 ...
- EF Core 快速上手——EF Core 入门
EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用 本文是对 ...
- Asp.net core下利用EF core实现从数据实现多租户(1)
前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/ ...
- Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作
前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...
- ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)
前段时间听过一个关于使用ASP.NET Core建立项目的视频.其中使用EF Core映射到数据库的部分是按部就班地学习.今天自己建立项目时,有些步骤已经有一些遗忘.所以写下这篇文章,顺便理清思路. ...
- Asp.net core 学习笔记 ( ef core )
更新 : 2018-11-26 这里记入一下关于 foreignKey cascade action 默认情况下如果我们使用 data annotation required + foreginkey ...
- Asp.net core 学习笔记 ( ef core transaction scope & change level )
ef core 有 unit of work 的概念,当我们 save change 时会自动使用 transaction 确保更新的一致性. 隔离级别是默认的 read committed 不允许脏 ...
- Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是 ...
随机推荐
- Hat's Fibonacci
Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...
- 暑假练习赛 007 C - OCR
C - OCR Description standard input/outputStatements Optical Character Recognition (OCR) is one of th ...
- linux的特殊符号与正则表达式
第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的. 1.1.2 * 通过find 命令找以 .sh 结尾的文件,使用*替代文件名字. ...
- 定时器解决js长时间运行脚本问题
一般地,单个js操作的运行时间不应超过100毫秒,否则的话,会影响用户体验,用户会认为自己与界面失去联系.而对于一些复杂的任务,可能无法在100ms内完成,甚至会突破浏览器限制(调用栈大小限制和长时间 ...
- MSBuild Tools解决办法
每次在CI上通过Msbuild做发布,基本都会碰到下面的问题 error MSB4019: 未找到导入的项目"C:\Program Files (x86)\MSBuild\Microsoft ...
- Python函数篇:装饰器
装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...
- Codeforces 862A Mahmoud and Ehab and the MEX
传送门:CF-862A A. Mahmoud and Ehab and the MEX time limit per test 2 seconds memory limit per test 256 ...
- 百度地图Marker优化方案
简介 在使用百度地图的时候,我们需要在地图上增加标注Marker来展示设置信息.随着用户需要不断增多,加载更多的Marker标注信息成为了一种奢望.然而通过自己技术的提升,归结出来了一下方案. 引入百 ...
- 利用C#实现分布式数据库查询
随着传统的数据库.计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.但由于其开发较为复杂,在一定程度上制约了它的发展.基于此,本 ...
- C语言系列之强制类型转换(一)
例子: #include <stdio.h> { char cChar; //字符型变量 short int iShort; //短整型变量 int ilnt; / ...