通过一个测试项目了解EF CORE

news2024/10/9 0:45:08

首先用vs2019创建一个.net core项目
可以是控制台应用程序,也可以是asp.net core项目

如果你使用控制台应用程序, 则可以在Main方法中直接使用EF Core进行CRUD操作。这通常用于测试或开发时快速进行数据库操作。

如果你使用ASP.NET Core应用程序, 则可以在控制器中使用EF Core进行CRUD操作。这通常用于在Web应用程序中与用户交互时进行数据库操作。

在任何情况下, 都需要创建一个DbContext类, 并使用它来进行数据库操作。

这篇先以控制台应用程序举例

以下是具体步骤:

1.创建一个新的控制台应用程序项目。

在这里插入图片描述

2.在项目中添加EF Core依赖项。可以使用以下命令在包管理器控制台中安装EF Core包(同时可以安装MySQL连接器包以及EF Core设计时(Design-Time)组件包):

在这里插入图片描述

Install-Package Microsoft.EntityFrameworkCore.Design -Version 3.0.0

Install-Package Pomelo.EntityFrameworkCore.MySql -Version 3.0.0

Install-Package Microsoft.EntityFrameworkCore -Version 3.0.0

3.在项目中创建一个实体类。例如Blog:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp2
{
    public class Blog
    {
        public int Id { get; set; }
        public string Url { get; set; }
    }
}

4.创建一个DbContext类, 并将实体类映射到数据库中的表。例如:

using Microsoft.EntityFrameworkCore;

namespace ConsoleApp2
{
    public class MyDbContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }

        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }

        public MyDbContext()
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySql(
                "Server=localhost;Database=mydatabase;User=root;Password=123456;");

        }
    }

}

5.在Main方法中, 使用EF Core进行CRUD操作。例如, 以下代码演示了如何使用EF Core在数据库中插入一条记录:

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new MyDbContext())
            {
                // Insert
                var blog = new Blog { Url = "http://sample.com" };
                context.Blogs.Add(blog);
                context.SaveChanges();

                // Update
                blog.Url = "http://updated.com";
                context.Blogs.Update(blog);
                context.SaveChanges();

                // Delete
 //               context.Blogs.Remove(blog);
 //               context.SaveChanges();
            }
        }

    }
}

6.创建数据库迁移

Add-Migration 

可以给这个迁移起一个名字或者编号

7.将未应用的迁移应用到数据库

这里使用迁移命令

Update-Database

他会根据DbContent的内容创建数据库mydatabase和表blogs

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySql(
                "Server=localhost;Database=mydatabase;User=root;Password=123456;");
//mydatabase
        }
        public DbSet<Blog> Blogs { get; set; }
//blogs 

在这里插入图片描述

8.运行项目

在这里插入图片描述
blogs表按照Main函数的内容被更改



主要问题就是版本适配,因为使用的是.net core3.1,所以找适配的EF Core MySQL连接器包以及EF Core设计时(Design-Time)组件包版本花费了点时间
请添加图片描述
https://longsheng.org/post/17239.html

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

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

相关文章

低温超导系统中实现液氦温度准确控制的解决方案

摘要&#xff1a;针对目前两种典型低温超导测试系统中存在的液氦压力控制精度较差的问题&#xff0c;本文提出了相应的解决方案。解决方案分别采用了直接压力控制和流量控制两种技术手段和配套数控阀门&#xff0c;结合24位AD和16位DA的超高精度的PID真空压力控制器和压力传感器…

第三十九章 贪心算法——区间问题(下)

第三十九章 贪心算法——区间问题&#xff08;下&#xff09;一、区间问题1&#xff1a;最大不相交区间数量1、思路详解2、代码实现二、区间问题2&#xff1a;区间覆盖1、问题2、思路3、代码一、区间问题1&#xff1a;最大不相交区间数量 1、思路详解 这道题和前一章讲的最后一…

IDEA 使用的小技巧

1、调整 idea 的虚拟内存&#xff1a; 尽管本质都是去改变 .vmoptions 配置文件&#xff0c;但推荐使用Change Memory Settings去调整&#xff0c;选择Edit Custom VM Options 或者在本地磁盘目录更改&#xff0c;通过某些方法破解的 idea 很可能造成 idea 打不开的情况 2、显…

【数据结构-源码分析】HashMap源码分析(超级详细)

文章内容1、HashMap简介2、类结构3、属性4、构造方法5、方法5.1、put方法5.2、resize方法6、jdk1.8的优化1、HashMap简介 HashMap基于哈希表的Map接口实现&#xff0c;是以key-value存储形式存在。&#xff08;除了不同步和允许使用 null 之外&#xff0c;HashMap 类与 Hashta…

Oracle数据库同步复制工具Beedup产品功能(二)

接续...... 8、对象比较 Beedup提供主从库相关对象比较功能&#xff0c;比对结果包含各类对象概要统计及差异详情。 支持Oracle、SQL Server、MySQL、DB2 对象比较。 9、 对象恢复 Beedup在向从库写入数据时会禁用目标表的关联触发器&#xff0c;另外对于Oracle 序列的状态…

MySQL复制技术方案——GTID复制配置

在日常运维中&#xff0c;GTID带来的最方便的作用就是搭建和维护主从复制&#xff0c;这也是DBA日常工作中最经常的操作了。GTID的主从模式替代了MySQL前期版本中利用二进制日志文件的名称和日志位置的做法&#xff0c;使用GTID使操作和维护都变得更加简洁和可靠。 搭建主从时…

SQL SELECT 语句

SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中&#xff0c;称为结果集。 SQL SELECT 语法 SELECT column1, column2, ... FROM table_name; 与 SELECT * FROM table_name; 参数说明&#xff1a; …

SVM训练莺尾花数据集

SVM训练莺尾花数据集 代码在莺尾花数据集上训练SVM&#xff0c;数据集由莺尾花的测量值及其相应的物种标签组成。该模型使用70%数据用于训练&#xff0c;然后剩余部分进行测试。其中′fit′fit′fit′方法在训练集上训练数据&#xff0c;′score′score′score′数据在返回模型…

HTC FOCUS3在PC端串流FOHEART H1数据手套(腕带)

本教程介绍使用FOHEART H1数据手套与HTC腕带式追踪器驱动VR中的虚拟手运动&#xff0c;实现手部的追踪及定位。与之前教程&#xff08;HTC FOCUS 3连接FOHEART H1数据手套&#xff09;不同&#xff0c;这次我们的场景内容运行在PC端&#xff0c;而不是头显端&#xff0c;使用VI…

基于Vue和SpringBoot的电商管理系统的设计与实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

8.mysql模块

目录 1 安装mysql模块 2 建立与mysql的连接 3 执行SQL语句 3.1 查询数据 3.2 插入数据 3.2.1 直接写入SQL语句 3.2.2 使用问号进行占位 3.2.3 使用对象传入 3.3 更新数据 3.3.1 使用问号进行占位 3.3.2 使用对象传入 3.4 删除数据 常见的数据库有下面几…

光驱重装系统教程

光驱重装系统是使用最长的系统安装方法&#xff0c;最早时候电脑都有光驱的&#xff0c;很多用户重装电脑系统的时候都会使用光驱重装系统&#xff0c;现在小编来为大家详细的介绍一下光驱重装系统的教程。 工具/原料&#xff1a; 系统版本&#xff1a;win7系统 品牌型号&#…

仪表板工具Stimulsoft Dashboards中的面板组件介绍

Stimulsoft Dashboards.JS是一个功能齐全的仪表盘工具&#xff0c;用于为JavaScript平台创建仪表板。 Stimulsoft Dashboards.JS官方正版下载&#xff08;qun&#xff1a;740060302&#xff09;https://www.evget.com/product/4101/download在上一篇文章中&#xff0c;主要介绍…

剑指 Offer 24. 反转链表

一、题目 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < 节点个数 < 5000 二、题目解析&…

AI算法工程师 | 09机器学习-概率图模型(六)命名实体识别与CRF

文章目录机器学习 - 概率图模型 之 命名实体识别与CRF一、命名实体识别 NER 的基本介绍1、相关概念2、主要方法&#xff08;导图&#xff09;3、标注策略二、CRF 层之 BiLSTM&#xff08;BiLSTM-CRF&#xff09;1、介绍1.1 BiLSTM-CRF 模型1.2 添加 CRF 层的好处2、CRF 层2.1 E…

华为云工程师HCIA——华为虚拟化平台使用与管理

一、FusionCompute计算虚拟化介绍 1、计算虚拟化相关概念 1.1、虚拟化介绍虚拟化介绍 1.2、虚拟化的特点&#xff08;反过来考定义也要会&#xff09; •分区&#xff1a;分区意味着虚拟化层为多个虚拟机划分服务器资源的能力&#xff1b;每个虚拟机可以同时运行一个单独的操…

xxx.Caffeine进程缓存

Caffeine 是基于Java 8的高性能&#xff0c;接近最佳的缓存库。看上图 赋代码&#xff1a; <dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId> </dependency> package com.heima.item.con…

网络编程 - Linux socket编程

前言 socket(套接字)是网络编程编程的一种技巧。通过socket不仅可以实现跨进程通信&#xff0c;还可以实现跨主机的网络通信。使用这种技术&#xff0c;就可以实现全国各地的通讯。例如&#xff1a;深圳的一台电脑接收来自北京一台电脑发来的信息。   本篇不涉及太底层的网络原…

hudi系列-索引机制

1. 索引机制 hudi的索引机制是为了加速upsert/delete操作&#xff0c;它维护着&#xff08;分区 key&#xff09;-> fileID之间的映射关系&#xff0c;所以可以减少对非必要base文件的合并 key是指索引key&#xff0c;可以是表的任意字段&#xff0c;在全局索引中常用主键…

Linux chmod命令详解,Linux修改文件权限

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 chmod 命令一、常用操作1. 字母形式2. 数字形式3. 递归设置二、文件权限解读三、数字权限四、特殊的root权限五、SUID详解1. 设置SUID2. 取消…