首页 > 数据库 >EFCore -CodeFirst模式 数据库使用SqLite

EFCore -CodeFirst模式 数据库使用SqLite

时间:2024-07-17 13:29:28浏览次数:16  
标签:studentContext CodeFirst get SqLite System static EFCore using public

首先安装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
    {
        //学生ID
        public 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

标签:studentContext,CodeFirst,get,SqLite,System,static,EFCore,using,public
From: https://www.cnblogs.com/sai-123/p/18307094

相关文章

  • 将DBF文件(dBase, FoxPro等)中的数据转换到SQLite
    将DBF文件(dBase,FoxPro等)中的数据转换到SQLite,可遍历指定目录下所有的dbf文件。可参考以下程序,本程序参考了dbf-to-sqlite: #_*_coding:utf-8_*_'''@File:main.py@Time:2024/07/17@Author:LionGIS@Contact:[email protected]@Description:......
  • linux高级编程(sqlite数据库调用)
    数据库1、分类:大型  中型        小型      ORACLE MYSQL/MSSQL SQLITE DBIIpowdb      关系型数据库    2、名词:      DB      数据库selectupdatedatabase      DBMS   数据库管理......
  • sqlalchemy pandas转化字典转为orm写入到sqlite数据库报错类型错误的解决办法
    使用pandas读取csv数据,然后将其转化为字典,再写入到数据库的时候,数据库总是报错类型错误,于是转为orm之前,统一转化一下类型fromsqlalchemyimportDECIMAL,Index,String,Date,Integer,Text,CHAR,SmallInteger,Float,Time,case,and_,extract,TypeDecoratorfrom......
  • SQLite各种连接大展神威
    一、概述1.SQLite定义了3种连接:交叉连接(CROSSJOIN)、内连接(INNERJOIN)、外连接(OUTERJOIN)。2.外连接(OUTERJOIN,OUTER关键字可以省略)是内连接(INNERJOIN,默认的连接类型,INNER关键字可以省略)的扩展。虽然SQL标准定义了三种类型的外连接:LEFT、RIGHT、FULL,但SQLite只支持左外......
  • sqlite3之基础
    最近在用Python借助于pySimpleGui做一个桌面小工具,奉行小巧,简单的宗旨,使用了本地数据库sqlite3来进行本地数据的存储参考:官网: https://www.sqlite.org/指导教程:https://www.sqlitetutorial.net/ 基础语法比较简单,跟MySQL差异并不大,半小时了解一下: http......
  • SQLite数据库恢复
    一、使用备份文件恢复直接替换法:如果之前有备份数据库文件,最简单直接的恢复方法就是将备份文件直接替换掉损坏的或丢失的数据库文件。这种方法简单快捷,但需要注意在替换过程中确保没有其他程序正在访问数据库文件,以免造成数据不一致。使用SQLite命令行工具恢复:SQLite提供了命......
  • sqlite数据库解密恢复
    关于SQLite数据库解密恢复的问题,需要明确的是,SQLite本身并不直接支持加密功能。SQLite数据库文件(通常是.db或.sqlite文件)在默认情况下是不加密的,即数据以明文形式存储。因此,当提到“解密恢复”时,可能指的是对通过第三方工具或方法加密过的SQLite数据库进行解密和恢复。一、确定......
  • QT--SQLite
    配置类相关的表,所以我使用sqlite,且QT自带该组件;1.安装sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575使用SQLiteExpert建好数据库.db文件,和对应的表后把db文件放在指定目录./db/program.db;2.选择sql组件3.新增数据库处理类,在使用数据库的地方调用类成员函数......
  • 【SQLite3】常用API
    SQLite3常用API数据库的打开和关闭数据库的打开(sqlite3_open函数)sqlite3_open()函数用于打开一个SQLite数据库文件的函数,函数原型如下:intsqlite3_open(constchar*filename,/*数据库文件的文件名,如果为":memory:"则表示创建内存中数据库*/sqlite3......
  • .NetCore中EFCore for MySql整理MySql.EntityFrameworkCore
    一、MySql.EntityFrameworkCore 这个是官方给的一个EF操作MySql数据库的框架。使用方法跟EFforSqlServer一样。 二、安装命令NuGet\Install-PackageMySql.EntityFrameworkCore-Version8.0.5  项目依赖 安装后的结果:   三、EFCodeFirst模式连......