使用 EF Core 处理Sqlite数据库

news2024/11/24 9:01:27

使用 EF Core 处理Sqlite数据库

1.通过NuGet安装Microsoft.EntityFrameworkCore.Sqlite

在这里插入图片描述

2.编写生成数据库的实体类

因为EF Core是通过实体类来作为数据库的字段

public class User
{
    /// <summary>
    /// 主键 Id
    /// </summary>
    [Key]
    public int Id { get; set; }
    /// <summary>
    /// 数据库 Name
    /// </summary>
    [Column("Name")]
    public string Name { get; set; }
    /// <summary>
    /// 数据库 Sex
    /// </summary>
    [Column("Sex")]
    public string Sex { get; set; }
}

3.编写EF Core的实体类

public class AppDbContext : DbContext
{
    private readonly string _connection;
    //实体表,提供给外部crud使用,PersonInfos内部有DataContext 的实例
    public DbSet<User> User { get; set; }
    public AppDbContext()
    {
        //1、获取连接数据库的字符串
        _connection = ConfigurationManager.ConnectionStrings["SqliteEF6ConnectionStr"].ConnectionString;
    }
    //2、联接数据库
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);
        optionsBuilder.UseSqlite(_connection);
    }
    //3、建立实体和数据库表格 一 一 映射。  
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().ToTable("User").HasKey(b => b.Id);
    }
}

4.创建数据库语句及增删改查

/// <summary>
/// 创建数据库
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
    AppDbContext dbContext = new AppDbContext();
    dbContext.Database.EnsureCreated();
}
/// <summary>
/// 增加数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
    AppDbContext dbContext = new AppDbContext();
    User user = new User();
    user.Name = "Test";
    user.Id = 1;
    user.Sex = "男";
    dbContext.Add(user);
    User user2 = new User();
    user2.Name = "Test";
    user2.Id = 3;
    user2.Sex = "男";
    dbContext.Add(user2);
    dbContext.SaveChanges();
}
/// <summary>
/// 修改数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
    AppDbContext dbContext = new AppDbContext();
    User? user = dbContext.User.Where(b => b.Id == 3).FirstOrDefault();
    user.Sex = "女";
    dbContext.SaveChanges();
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
    AppDbContext dbContext = new AppDbContext();
    User? user = dbContext.User.Where(b => b.Id == 3).FirstOrDefault();
    dbContext.Remove(user);
    dbContext.SaveChanges();
}
/// <summary>
/// 查询数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
    AppDbContext dbContext = new AppDbContext();
    List<User> users = dbContext.User.ToList();
}

5.总结

EF Core

优点:

微软官方ORM

功能强大,支持模式多

文档齐全

缺点:

1.复杂查询生成的SQL语句性能太差(对操作功力要求高)

2.一些常用功能缺失,需要自已封装

3.批量操作性能不算太好

4.原生SQL支持不友好 ,需要自己封装

使用EF Core最好的方法就是结合其他的sql框架一起使用

2022/12/8

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码上传gitee

有两种场景&#xff1a; 一、自己的代码没有用git管理&#xff0c;先将自己的代码用git管理起来&#xff0c;然后上传gitee gitee注册账号后&#xff0c;点“”号创建代码仓库&#xff0c;这就是你的代码库上传后的路径。 然后填写仓库名称和路径&#xff0c;这个可以随便写&…

【论文合集】2022年10月医学影像期刊论文合集

★ 本月IEEE Transactions on Medical Imaging(1区 top if 11.037) 共32篇, Medical Image Analysis&#xff08;1区 top if 13.828&#xff09; 共30篇. ”标题高频词汇 (segmentation, 13), (brain, 9), (mri, 6), (graph, 4)(attention, 4), (3d, 4), (contrastive, 4), …

代理模式--【学习笔记】

什么是代理模式&#xff1f; 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理对象访问目标对象.如此便于在目标实现的基础上增加额外的功能操作,以满足自身的业务需求. 代理模式又分为静态代理&#xff0c;动态代理 静态代理模式 编写代理类, 要求: 代理类与目标类…

【我爱世界杯】伪球迷眼里的世界杯

大家好&#xff0c;我是【架构师李肯】&#xff0c;一个专注于嵌入式物联网架构设计的攻城狮。 文章目录按理说聊一聊我和足球第一次热衷于关注世界杯后ying情时代的卡塔尔世界杯祝愿世界杯按理说 嗯&#xff0c;按理说&#xff0c;我一个程序猿&#xff0c;既不踢球&#xff…

ChatGPT原理解析-张俊林

本文将从以下几个方面展开&#xff1a; 引言 ChatGPT的技术原理 引言 作为智能对话系统&#xff0c;ChatGPT最近两天爆火&#xff0c;都火出技术圈了&#xff0c;网上到处都在转ChatGPT相关的内容和测试例子&#xff0c;效果确实很震撼。我记得上一次能引起如此轰动的AI技术…

湃睿PMDS-Fx传感器在电动牙刷上的应用

电动牙刷、冲牙器等产品市场的爆发性增长&#xff0c;显示全球人口正在越来越关注牙齿/口腔的健康问题。 根据资料显示&#xff0c;中国电动牙刷市场规模呈现逐年上涨的态势&#xff0c;2017年中国电动牙刷市场规模为43亿元&#xff0c;2021年中国电动牙刷市场规模上涨为125亿…

01-go基础-10-结构体 struct (定义结构体、声明结构体变量、结构体赋值、结构体做参数、结构体指针、结构体嵌套、结构体打印)

文章目录1. 定义结构体类型2. 声明结构体变量3. 赋值3.1 用结构体赋值3.2 每个成员分别赋值4. 结构体使用4.1 结构体作参数4.2 结构体指针做参数4.3 二者区别4.4 本质原因5. 结构体嵌套5.1 一个结构体作为另一个结构体的成员1&#xff09;定义2&#xff09;赋值和引用3&#xf…

RabbitMQ的学习

MQ引言 什么是MQ MQ(Message Quene)&#xff1a;翻译为消息队列&#xff0c;通过典型的生产者和消费者模型生产者不断向消息队列中生产消息&#xff0c;消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的&#xff0c;而且只关心消息的发送和接收&#xff0c;没有…

【MySQL 原理篇】- 凭这个,我拿下字节面试

若是想查看原图&#xff0c;请点击这里 刘卡卡 | ProcessOn 超链接 索引 从存储结构上看&#xff0c;有哪些索引从存储结构上来划分&#xff1a;BTree索引&#xff08;B-Tree或BTree索引&#xff09;&#xff0c;Hash索引&#xff0c;full-index全文索引&#xff0c;R-Tree索…

[附源码]Python计算机毕业设计Django在线票务系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

JavaEE

文章目录前言JRE与JDK区别JAVASE、JAVAEE、JAVAME区别Dos常用命令为什么需要Path环境变量配置前言 &#x1f4cb;前言&#x1f4cb; &#x1f49d;博客&#xff1a;【无聊大侠hello word】&#x1f49d; ✍有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01;…

关于有限元应力结果精度的几点讨论

1引言 作为一名汽车结构CAE工程师&#xff0c;使用有限元法进行应力分析是我多年的日常工作。但是关于有限元应力结果的一些技术点一直未能吃透&#xff0c;查到的相关文献也不多&#xff0c;文献内容也存在很多不尽不实之处。最近一段时间&#xff0c;抽空重新读了一遍王勖成…

泊松分布一

文章目录1. 泊松分布定义2.泊松分布具体实例实例1&#xff1a;实例2&#xff1a;3.生成泊松分布的代码泊松分布适合于描述单位间隔(时间、距离、面积、体积)内随机事件发生的次数的概率分布。如电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的…

【Android】用无障碍服务整个脚本——我看刑

本文灵感来源&#xff1a;李跳跳真实好友 app 目录无障碍服务(AccessibilityService)模拟点击组件ID & 组件文本坐标后台保活效果图存在缺陷缺陷一缺陷二缺陷三缺陷四无障碍服务(AccessibilityService) 无障碍服务(AccessibilityService)&#xff0c;是Google推出为了帮助…

从零搭建Sentry

前言 Sentry 为一套开源的应用监控和错误追踪的解决方案。这套解决方案由对应各种语言的 SDK 和一套庞大的数据后台服务组成。应用需要通过与之绑定的 token 接入 Sentry SDK 完成数据上报的配置。通过 Sentry SDK 的配置&#xff0c;还可以上报错误关联的版本信息、发布环境。…

四信机房环境监测方案上线 实现集中监控,统一管理

随着“东数西算”工程和新基建的加速落地&#xff0c;数智化技术正逐渐渗透到各领域。以机房行业为例&#xff0c;由于数据中心建设规模的逐步壮大&#xff0c;机房设备市场需求同步增长&#xff0c;为行业用户带来更多可能性。 伴随着机房中设备数量不断增多&#xff0c;如何…

Vue2实现浏览器ctrl+f功能

Vue2实现浏览器ctrlf功能 安装插件 使用一个Vue2的插件search-bar-vue2 npm install search-bar-vue2全局注册 //全局注册 import SearchBar from search-bar-vue2 Vue.use(SearchBar)局部注册 <template><div><search-bar :root"#app" :highlig…

【VUE】实现分页组件

&#x1f4d8;前言 &#x1f6a9;&#x1f6a9;&#x1f6a9; &#x1f48e;个人主页: 阿选不出来 &#x1f4a8;&#x1f4a8;&#x1f4a8; &#x1f48e;个人简介: 一名大二在校生,学习方向前端,不定时更新自己学习道路上的一些笔记. &#x1f4a8;&#x1f4a8;&#x1f4a…

Navigation--导航机理

1.ROS navigation为移动机器人导航相关包的集合&#xff0c;实现定位规划避障等相关功能。 整体工作流程为&#xff1a; 1.加载地图 navigation通过map_server加载现有地图。navigation无建图相关包&#xff0c;需另外实现后保存&#xff0c;默认只支持2维地图&#xff0c;其…

[附源码]Python计算机毕业设计Django游戏商城平台论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…