.NET Core EFCore零基础快速入门简单使用
一、什么是 Entity Framework (EF) Core
Entity Framework (EF) Core 是轻量化、可扩展和跨平台版的对象关系映射程序 (O/RM)数据访问技术,。 它将开发人员从编写大量 SQL 语句中解放出来。
二、EF的相关程序包
Microsoft.EntityFrameworkCore 核心程序包,封装了关键的核心代码,使用EF必须引用这个包
Microsoft.EntityFrameworkCore.Design 设计包,用于在命令行工具下EF Core开发的工具套件
Microsoft.EntityFrameworkCore.Tools 用于数据库的生成、迁移、生成表等
三、EF Core支持的数据库引擎:SqlServer、Sqlite、PostgreSQL、MySql、Oracle等主流数据库,不同的数据库需要EF Core数据库提供程序支持。
微软维护的数据库程序包
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Sqlite
Microsoft.EntityFrameworkCore.InMemory
Microsoft.EntityFrameworkCore.Cosmos
四、使用流程
1、在项目里添加安装数据库程序包,我这里使用MySql数据库,管理Nuget程序包添加Microsoft.EntityFrameworkCore.Design、Pomelo.EntityFrameworkCore.MySql的引用后已经包含了Microsoft.EntityFrameworkCore的相关依赖
2、创建数据库实体映射类
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; } = new List<Post>();
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
3、新建一个继承DbContext的类作用是配置数据连接、操作数据库表等信息
public class BloggingContext: DbContext
{
/// <summary>
/// Blogs表的操作属性
/// </summary>
public DbSet<Blog> Blogs { get; set; }
/// <summary>
/// Posts
/// </summary>
public DbSet<Post> Posts { get; set; }
/// <summary>
/// 配置数据连接信息
/// </summary>
/// <param name="optionsBuilder"></param>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("你的数据库连接字符串");
base.OnConfiguring(optionsBuilder);
}
}
4、添加数据库迁移文件:程序包管理控制台输入:
Add-Migration InitialCreate //InitialCreate是生成迁移文件的文件名,执行此命令后,会生成Migrations文件夹及相关的迁移文件
Update-Database //生成数据库
5、数据库:增、读、删、改操作
using (var db = new BloggingContext())
{
// Create
Console.WriteLine("Inserting a new blog");
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();
// Update
Console.WriteLine("Updating the blog and adding a post");
blog.Url = "https://devblogs.microsoft.com/dotnet";
blog.Posts.Add(
new Post
{
Title = "Hello World",
Content = "I wrote an app using EF Core!"
});
db.SaveChanges();
// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();
}
- 利用Flume 汇入数据到HBase:Flume-hbase-sink 使用方法详解
- 浅谈保证软件工程质量的一些心得体会
- 基于ELK的nginx-qps监控解决方案
- 2017年年度最烂密码排名
- 字符串方法汇总(三)
- 周鸿祎:“大安全”网络时代 需要AI大数据的技术支持
- 爆料:对扫码支付下手后,据说央行接下来要提高备付金,目标比例42%
- 回顾2017年5大科技突破,“时间晶体”充满想象!
- 1宽币=883?山本宽称要发行自己的数字货币
- 十种深度学习算法要点及代码解析
- 王健林旗下万达网科被曝大裁员 总裁出面说话了
- lodash源码分析之缓存方式的选择
- 《物联网智能终端信息安全白皮书》发布
- SemCmsv2_4 Function_php文件过滤不严导致Sql注入
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我写了一个R包,简化芯片的差异分析
- 【收藏】万字解析Scipy的使用技巧!
- Python 如何使用 HttpRunner 做接口自动化测试
- Python 爬虫时,高版本 App 如何进行抓包?
- 使用 shell-operator 实现 Operator
- 我们是如何用 K8S 搞定1000个应用的测试环境
- 关于Python 3.9,那些你不知道的事
- urllib, urllib2, urllib3 都是小弟弟
- 使用 Kustomize 定制 Helm Chart
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
- 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇)
- 6个提升效率的pandas小技巧
- 如何用 Python 让微博热搜榜动起来
- 如何用 Python 让微博热搜榜动起来
- 漫画:什么是 “抽象工厂模式” ?