.NetCore中EFCore的使用整理
EntirtyFramework框架是一个轻量级的可扩展版本的流行实体框架数据访问技术.
其中的.NetCore版本对应EntityFrameworkCore
Git源代码地址:https://github.com/aspnet/EntityFramework/
官方使用文档说明:https://docs.microsoft.com/zh-cn/ef/core/index
一、安装Nuget包
Install-package Microsoft.EntityFrameworkCore
Install-package Microsoft.EntityFrameworkCore.SqlServer
Micorsoft.EntityFrameworkCore:EF框架的核心包
Micorsoft.EntityFrameworkCore.SqlServer:针对SqlServer数据库的扩展,使用SqlServer数据库必须。类似的还有MySql,SqlLite等
Micorsoft.EntityFrameworkCore.Tools
&Micorosft.EntityFrameworkCore.Design:用户根据现有的数据库生成模型代码等 ,更多参考 :https://docs.microsoft.com/zh-cn/ef/efcore-and-ef6/porting/port-edmx二、使用实例
1.安装Nuget包之后,手动创建上下文,并 注入sql链接字符串
using Microsoft.EntityFrameworkCore;
namespace Core2
{
public class TestContext : DbContext
{
//public TestContext(DbContextOptions<TestContext> options) : base(options)
//{ //}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//注入Sql链接字符串
optionsBuilder.UseSqlServer(@"Server=.;Database=Test1;Trusted_Connection=True;");
}
public DbSet<Numeber1> Numeber1s { get; set; }
}
}
2.手写实体类,只要数据库中 存在对应 的表就可以了
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Core2
{
[Table("Numeber1")]
public class Numeber1
{
[Key]
public int ID { get; set; }
public decimal Num1 { get; set; }
}
}
3.测试代码:
static void TestOne()
{
TestContext _context = new TestContext();
int count = _context.Numeber1s.Count();
Console.WriteLine(count);
}
static void TestTwo()
{
DateTime start = DateTime.Now;
TestContext _context = new TestContext();
for (int i = ; i < ; i++)
{
_context.Numeber1s.Add(new Numeber1()
{
Num1 = i
});
_context.SaveChanges();
}
Console.WriteLine(_context.Numeber1s.Count());
Console.WriteLine("总时间,秒数:" + (DateTime.Now - start).TotalSeconds);
}
在调试的状态下1万条插入数据执行时间:
三、根据数据库生成模型
1.安装EntityFrameworkCore.Design,EntityFrameworkCore.Tools,EntityFrameworkCore.SqlServer.Design
注:在EFCore2.0中只需要安装
EntityFrameworkCore.Tools
如果不需要自动根据数据库生成代码,这个几个类库可以不安装 。
Install-package Microsoft.EntityFrameworkCore.Design
Install-package Microsoft.EntityFrameworkCore.Tools
Install-package Microsoft.EntityFrameworkCore.SqlServer.Design
2.选择对应的项目,执行生成命名
Scaffold-DbContext "Server=.;database=test1;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2
3.生成结果如下 :
四、Asp.Net Core中注册EF的上下文处理,在Startup文件中
1.注册服务
//配置EF的服务注册
services.AddEntityFramework()
.AddDbContext<NotifyBirdContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("SqlServer"), //读取配置文件中的链接字符串
b => b.UseRowNumberForPaging()); //配置分页 使用旧方式
});
2.修改上下文,重点指定DbContextOptions有外部配置
public NotifyBirdContext(DbContextOptions<NotifyBirdContext> opt) : base(opt)
{ }
3.在控制器中使用数据库上下文服务
NotifyBirdContext _Context = null;
public ProjectController(NotifyBirdContext context)
{
_Context = context;
}
/// <summary>
/// 获取可用项目数量
/// </summary>
/// <returns></returns>
[HttpGet("getcount")]
public int GetCount()
{
try
{
return _Context.Project.Count();
}
catch (Exception ex)
{ throw ex;
}
}
五 、.Net Core中 EF Core上下文配置 2,使用全局变量方式定义链接字符串
1.使用空参数构造器的上下文
/// <summary>
/// 全局定义数据连接字符串
/// </summary>
public static string ConStr { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;database=NotifyBird;Trusted_Connection=True;"); //配置数据链接
optionsBuilder.UseSqlServer(ConStr,b=>b.UseRowNumberForPaging());
}
2.程序 启动注册链接
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc(); NotifyBirdContext.ConStr = Configuration.GetConnectionString("SqlServer");
}
3.任意位置实例化,上下文使用
/// <summary>
/// 获取可用项目数量
/// </summary>
/// <returns></returns>
[HttpGet("getcount")]
public int GetCount()
{
try
{
NotifyBirdContext _Context = new NotifyBirdContext();
return _Context.Project.Count();
}
catch (Exception ex)
{ throw ex;
}
}
更多 :
VS Code搭建.NetCore开发环境(二)
VS Code搭建.NetCore开发环境(一)
Chocolatey 简介(软件自动化管理工具)
.NetCore中EFCore的使用整理的更多相关文章
- .NetCore中EFCore的使用整理(二)-关联表查询
EF常用处理关联加载的方式有3中:延迟加载(Lazy Loading).贪婪加载 (Eager Loading)以及显示加载. 一.EF Core 1.1 1.当前的版本,还不支持延迟加载(Lazy ...
- .NetCore中EFCore for MySql整理(三)之Pomelo.EntityFrameworkCore.MySql
一.Pomelo.EntityFrameworkCore.MySql简介 Git源代码地址:https://github.com/PomeloFoundation/Pomelo.EntityFrame ...
- .NetCore中EFCore for MySql整理(二)
一.简介 EF Core for MySql的官方版本MySql.Data.EntityFrameworkCore 目前正是版已经可用当前版本v6.10,对于以前的预览版参考:http://www.c ...
- .NetCore中EFCore的使用整理(三)-关联表操作
一.查询关联表数据 StudyAboard_TestContext _context = new StudyAboard_TestContext(); CrmRole role = _context. ...
- .NetCore中EFCore for MySql整理
一.MySql官方提供了Ef Core对MySql的支持,但现在还处于预览版 Install-Package MySql.Data.EntityFrameworkCore -Pre Install-P ...
- NetCore 中 EFcore的DbFirst和CodeFirst混合 使用注意
NetCore 最近很火热.笔者想把自己以前的旧项目迁移到NetCore平台. 先用EFcore的DBFirst根据数据库创建实体类,然后加入数据库版本控制功能也就是EFcore的CodeFirst部 ...
- Asp.Net Core中Json序列化处理整理
一.Asp.Net Core中的Json序列化处理使用的是Newtonsoft.Json,更多参考:C# Newtonsoft.Json JsonSerializerSettings配置序列化操作,C ...
- netcore使用EFcore(第一个实例)
说明:搭建netcore 使用efcore入门教程,跟着这个教程,傻瓜都可以成功!O(∩_∩)O哈哈~,咱们开始吧: 首先介绍下环境: vs2017, netcore2.2, EntityFramew ...
- .NetCore中的日志(2)集成第三方日志工具
.NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...
随机推荐
- linux ubuntu 指令
查找文件:ls -lrt /java 用于查找java文件信息 https://ipcmen.com/ls编辑/etc/profilewen文件,在文件末尾添加export JAVA_HOME=/us ...
- Extjs MVC模式开发,循序渐进(一)
本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...
- jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]
/** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...
- mybatis中的查询语句in用法的相关问题
在开发的时候,mybatisl中使用in的时候会遇到一些问题,如果我们传的参数是String类型,以“,”来进行隔开的,例如:参数是0,1,2字符串,mybatis中的语句如下 <select ...
- AndroidStudio将html5打包成apk
我想将html5的动画效果打包成手机app,以方便传播.而在android开发的组件中就直接由webview可以访问网页,另外在android工程中,assets文件夹下的内容是不会在被编译的,因此可 ...
- mysql 不区分大小写的解决
mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc';select * from some_table where str='AB ...
- python全栈开发day47-jqurey
一.昨日内容回顾 二.今日内容总结 1.jquery的介绍 1).为什么要用jquery? # window.onload 事件有事件覆盖的问题,因此只能写一个事件. # 代码容错性差 # 浏览器兼容 ...
- asp.net core环境变量详解
环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的环境变量在其它文件里面,不多说了,有兴趣的 ...
- Python yaml模块
引用自:https://www.cnblogs.com/shaosks/p/7344771.html 一.简介 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通 ...
- [Web安全] XXE漏洞攻防学习(中)
0x00.XXE漏洞攻击实例 攻击思路: 1. 引用外部实体远程文件读取 2. Blind XXE 3. Dos 0x01.外部实体引用,有回显 实验操作平台:bWAPP平台上的XXE题目 题目: 进 ...