EFCore -CodeFirst模式 数据库使用SqLite

news/2024/11/15 13:31:52/文章来源:https://www.cnblogs.com/sai-123/p/18307094

首先安装nuget包:System.Data.SQLite 和 SQLite.CodeFirst,如下二图:


然后在App.config中配置数据库连接字符串:

<connectionStrings><add name="StuDB" connectionString="data source=BoilerCalculator.db" providerName="System.Data.SQLite.EF6" />
</connectionStrings>

下面用这种方式实现WPF对学生信息的数据管理(效果图如下)

一:创建实体类Students

using System;
using System.ComponentModel.DataAnnotations.Schema;namespace EFCoreDemo.Models
{[Table("StudentManager")]//映射SqLite的表格public class Students{//学生IDpublic int Id { get; set; }//学生名称public string StudentName { get; set; }//学生性别public string Gender { get; set; }//学生出生年月public DateTime Birthday { get; set; }//学生地址public string Address { get; set; }//家长电话public string PatriarchTel { get; set; }}
}

二:studentContext数据库关系映射类:

using EFCoreDemo.Models;
using SQLite.CodeFirst;
using System.Data.Entity;namespace EFCoreDemo
{public class StudentContext:DbContext{public StudentContext() : base("StuDB"){}protected override void OnModelCreating(DbModelBuilder modelBuilder){var intit = new SqliteCreateDatabaseIfNotExists<StudentContext>(modelBuilder);Database.SetInitializer(intit);Database.SetInitializer(new SqliteDropCreateDatabaseWhenModelChanges<StudentContext>(modelBuilder));modelBuilder.Entity<Students>();base.OnModelCreating(modelBuilder);}//映射类public DbSet<Students> StudentsData { get; set; }}
}

三:封装的增删改查方法类

using EFCoreDemo.DB;
using EFCoreDemo.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;namespace EFCoreDemo
{public static class EFCoreHelper{private static StudentContext _studentContext = new StudentContext();public static StudentContext studentContext  { get => _studentContext; set => _studentContext = value; }//查询所有学生数据public static ObservableCollection<Students> GetStudents(){var list=studentContext.StudentsData.ToList();return new ObservableCollection<Students>(list);}//添加新的学生信息public static int InsertStu(Students students){try{studentContext.StudentsData.Add(students);studentContext.SaveChanges();return 0;}catch(Exception ex){MessageBox.Show(ex.Message);return -1;}}//修改学生信息public static int UpdateStu(Students students){try{var id = studentContext.StudentsData.Find(students.Id);var entry = studentContext.Entry(id);entry.CurrentValues.SetValues(students);entry.Property(p => p.Id).IsModified = false;studentContext.SaveChanges();return 0;}catch{return -1;}}//删除学生信息public static void RemoveStu(int ID){Students student = GetStudentWithID(ID);studentContext.StudentsData.Remove(student);studentContext.SaveChanges();}//学生信息关键字查询public static List<Students> CheckStudentWithKey(string StuName){return studentContext.StudentsData.Where(p => p.StudentName == StuName).ToList();}//学生信息ID查询public static Students GetStudentWithID(int ID){return studentContext.StudentsData.FirstOrDefault(p => p.Id == ID);}}
}

之后就可以调用封装类EFCoreHelper里的方法完成增删改查了。具体调用方法参考以下链接。不同之处是原博主使用的是SQLServer数据库,我这边使用的是SQLite数据库,其它都可以参考以下链接的文章。
https://blog.csdn.net/m0_47274301/article/details/118878005

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

log4net 在.NET Core 控制台程序中的应用(2)

简介 本文主要讲解log4net 在.NET Core控制台程序中的应用 步骤 1.安装log4net Nuget包 2.增加配置文件 3.直接调用 4.验证结果 实施 1.安装log4net Nuget包 首先,需要在你的.NET Core项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,然后使用以下命令安装l…

.NET开源、简单、实用的数据库文档生成工具

前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等多文档格式的导出:DBCHM。 支持的数据库 SqlServer、MySQL、Oracle、PostgreSQL、DB2、SQLite。 文档的内容都包…

记4道弱智题

今天集训模拟赛,3h,喜提110pts/400pts。 第一题:反复覆盖区间,求各点处的最小值。 上来想了差分,记录左端点等方法,越写越长。20min跳了,慌。 第二题:模拟题,ipv6压缩。 看起来不难,开始写,先去掉全0串,再去掉前导零,最后处理输出,样例全过了,我觉得能A。 第三题…

log4net 在.NET Core 控制台程序中的应用

简介 本文主要讲解log4net 在.NET Core控制台程序中的应用 步骤 1.安装log4net Nuget包 2.增加配置文件 3.增加封装的LogHelper的类 4.调用 5.验证结果 实施 1.安装log4net Nuget包 首先,需要在你的.NET Core项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,…

iOS开发基础116-性能监控

在iOS开发中,性能监控是确保应用流畅运行和用户体验的关键。常用的性能监控工具能够帮助开发者实时监控系统性能,检测和诊断性能问题。下面列举几款常用的iOS性能监控工具,深入解析其底层原理、优缺点。 1. Instruments Instruments 是由Apple官方提供的用于性能分析和调试的…

【转载】浅谈 pb_ds 库及其在OI其他算竞中的应用

笔记 2023年11月16日 35 0 【转载】浅谈 pb_ds 库及其在OI其他算竞中的应用 【原链接】这篇太叼了! pb_ds,比 STL 更强大的模板库。upd. on 10.27 更新了优先队列的常数分析,增加了“万能头文件”的内容。 前言 之前看到过一篇关于 pb_ds 写得很好的文章,但现在找不到了;O…

[BJDCTF2020]Mark loves cat(源码泄露+命令执行)

扫描之后发现是/.git源码泄露 python GitHack.py http://56ad87c1-d8fb-463d-9480-f0fbee5176a0.node5.buuoj.cn:81/.git/ 之后出现源码查看index.php<?php// 包含外部文件 flag.php,可能包含变量 $flag include flag.php;// 初始化三个变量 $yds = "dog"; …

易优CMS根据aid获取文档页面链接

使用sql等标签获取到文档信息,但是没有获取到文档页面的链接,可以使用以下方法生成。 1、在根目录下\extend\function.php中创建方法: if (!function_exists(diy_get_arcurl)) {/*** 获取前台文档的URL* @param integer $aid 文档ID* @param integer $typeid 栏目ID* …

uni-app实现web-view和App之间的互相通信

1.web-view向App传递消息 官网对于uni-app使用web-view的介绍如下:web-view 注意事项提到postMessage方法,这就是web-view向App传递消息的方法,使用如下: 注意H5本身不支持uni-app里面的方法,所以在项目中引入支持调用uni-app方法的库 web-view页面使用:uni.postMessage(…

绘制双Y轴图

双Y轴图可以比较不同度量、展示数据相关性、统一时间序列、强调差异性、增强可读性等方面有重要作用,本案例展示了一种简单的双Y轴绘制方法,可以根据具体项目的要求,增加参数设置。1.导入数据库 import pandas as pd import matplotlib.pyplot as plt import numpy as np pl…

服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】

服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】 服务注册/发现-Eureka 目前主流的服务注册&发现的组件是Nacos, 但是Eureka 作为一个老牌经典的服务注册&发现技术还是有必要学习一下, 原因:一些早期的分布式微服务项目使用的是Eureka,在工作中, 完全有可…