EF Core入门例子(以SqLite为数据库)

测试环境:

visual studio 2017

.net core 2.1

具体步骤如下:

1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误

同时,如果这个解决方案有多个项目,一定要把当前项目设为启动项目,且程序包管理器控制台默认项目一定要选对,不然到后面执行Add-Migration命令时会报如下的错误:

2 利用Nuget安装Microsoft.EntityFrameworkCore.Sqlite,版本选择2.2.6及安装Microsoft.EntityFrameworkCore.Tools,版本选择2.2.6,如下图:

(注意:安装Microsoft.EntityFrameworkCore.Sqlite时,会把EF Core对应的依赖包Microsoft.EntityFrameworkCore等都自动安装上,不用再单独安装 ,如果数据库是Sql Server,则安装Microsoft.EntityFrameworkCore.SqlServer)

3 新增实体类Student,并编辑如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Text;

namespace EFCoreDemo
{
    public class Student
    {
        public long Id { set; get; }

        public string Name { set; get; }
    }
}

4 新增Student类对应的配置类StudentConfig,并编辑如下:

cs 复制代码
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Text;

namespace EFCoreDemo
{
    public class StudentConfig : IEntityTypeConfiguration<Student>
    {
        public void Configure(EntityTypeBuilder<Student> builder)
        {
            builder.ToTable("Student");
        }
    }
}

5 新增上下文类MyDbContext,并编辑如下:

cs 复制代码
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;

namespace EFCoreDemo
{
    public class MyDbContext:DbContext
    {
        public DbSet<Student> Students { set; get; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
            optionsBuilder.UseSqlite("Data Source=KnowledgeDataBase.sqlite;");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
        }
    }
}

上面的的KnowledgeDataBase.sqlite为SqLite的数据库文件名称

6 打开程序包管理控制台,

6.1 输入命令:Add-Migration Init,如下图:

然后会在项目中自动生成目录Migrations,并自动3个类,不要动它们,如下图:

6.2 输入命令:Update-database,会执行更新,如下图:

由于用的是SqLite数据库,会在项目中生成一个名为

KnowledgeDataBase.sqlite的数据库文件,并设置为"始终复制",如下图:

7 主程序编辑如下:

cs 复制代码
using System;
using System.Linq;

namespace EFCoreDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Name = "zxy";
            MyDbContext myDbContext = new MyDbContext();
            myDbContext.Add(stu);
            myDbContext.SaveChanges();

            var students=myDbContext.Students.Where(a => a.Name == "zxy");
            foreach (var item in students)
            {
                Console.WriteLine($"Id:{item.Id} Name:{item.Name}");
            }
            Console.WriteLine("执行完毕");
            Console.ReadLine();
        }
    }
}

运行结果如下:

好了,本文的内容到此结束

相关推荐
hhb_6181 小时前
Flask+SQLite实现用户管理接口
python·sqlite·flask
根号五2 小时前
JetBrains Rider 使用教程(1)新建解决方案
c#·jetbrains rider
海天鹰3 小时前
C#:接收从打开方式打开的参数
c#
宝桥南山4 小时前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
开开心心_Every4 小时前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
东莞市云毅网络有限公司4 小时前
客服记录里的问句怎么变成知识库条目:意图聚类的 Python 实现
python·sqlite·自动化运维·geo·数据监测
波力海苔夹心脆6755 小时前
VisionPro 与 VisionMaster 对比(上):软件定位、开发环境与核心视觉工具对照
图像处理·算法·计算机视觉·c#·视觉检测·个人开发·vp9
疯狂戴夫冒险6 小时前
歇一会 · 久坐休息提醒工具(番茄钟)工具分享
c#
...6227 小时前
VisionMaster 测量模块工具
c#·visionmaster
中国.NET研究协会1 天前
SimdYolo:纯 C# YOLO 推理实现,CPU SIMD / Vulkan 架构与 PyTorch、ORT 实测
yolo·.net core