.NET Core/.NET6 使用DbContext 连接数据库,SqlServer

news2024/11/26 0:35:26

安装以下NuGet包

Microsoft.EntityFrameworkCore.SqlServer:SQL server 需要添加包
Microsoft.EntityFrameworkCore.Tools
Newtonsoft.Json:用于Json格式转换

创建一个实体类来表示数据库表。在项目中创建一个名为Customer.cs的文件,并添加以下代码

namespace AliWorkbenchProgram.Models
{
    public class Customer
    {

        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }



    }
}

创建一个数据库上下文类,用于定义实体类和数据库连接配置。在项目中创建一个名为AppDbContext.cs的文件,并添加以下代码:


using AliWorkbenchProgram.Models;
using Microsoft.EntityFrameworkCore;



namespace AliWorkbenchProgram.DB
{
    public class AppDbContext : DbContext
    {

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

        public DbSet<Customer> Customers { get; set; }



    }
}

接下来,配置数据库连接。打开appsettings.json文件,并添加以下内容:

{

  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=EFCoreDemo;Trusted_Connection=True;MultipleActiveResultSets=true"
  },


  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

然后,在Startup.cs文件的ConfigureServices方法中添加以下代码,用于配置数据库上下文的依赖注入:

创建类 DbEntitys 继承 DbContext

添加包并引用
using Microsoft.EntityFrameworkCore;


using AliWorkbenchProgram.Models;
using Microsoft.EntityFrameworkCore;


namespace AliWorkbenchProgram.DB
{
    public class DbEntitys : DbContext
    {

        /// <summary>
        /// 配置连接字符串,每次访问数据库之前会自动执行此方法,在这里配置连接字符串
        /// 相当于连接前事件
        /// 使用 IOC 注入的方式不实现此方法
        /// </summary>
        /// <param name="builder"></param>
        protected override void OnConfiguring(DbContextOptionsBuilder builder)
        {
            // 连接字符串
            string ConnString = "xxx";

            // 连接SqlServer
            builder.UseSqlServer(ConnString);

            // 连接MySql
            //builder.UseMySql(ConnString,new MySqlServerVersion(new Version()));
        }


        /// <summary>
        /// 默认构造函数 使用方法与原来一样
        /// </summary>
        public DbEntitys() : base() { }

        /// <summary>
        /// 通过IOC
        /// </summary>
        /// <param name="options"></param>
        public DbEntitys(DbContextOptions<DbEntitys> options) : base(options)
        { }


        /*
                /// <summary>
                /// 无主键 视图
                /// </summary>
                /// <param name="builder"></param>
                protected override void OnModelCreating(ModelBuilder builder)
                {
                    //指定主键字段,如果主键名称是id/Id/ID,可以省略
                    builder.Entity<Tab1>().HasKey("Key");

                    //指定为无主键或视图,不然可能会报错
                    builder.Entity<view1>().HasNoKey();
                    builder.Entity<view2>().HasNoKey();
                }

                //表映射
                public virtual DbSet<Tab1> Tab1 { get; set; }
                public virtual DbSet<Tab2> Tab2 { get; set; }




        */

        //表映射
        public virtual DbSet<Student> Students { get; set; }
        //public virtual DbSet<Tab2> Tab2 { get; set; }







    }
}

使用

IOC

在 Program.cs

// ↓↓↓↓↓ 在此范围内 ↓↓↓↓↓

            var ConnString = "xxx";
            //注入
            builder.Services.AddDbContext<DbEntitys>(x => x.UseSqlServer(ConnString));

// ↑↑↑↑↑ 在此范围内 ↑↑↑↑↑

在控制器 xxxController

        // <summary>
        /// 数据库操作实例
        /// </summary>
        private readonly DbEntitys _context;

        /// <summary>
        /// 构造函数获取实例
        /// </summary>
        /// <param name="db"></param>
        public StudentController(DbEntitys db)
        {
            _context = db;
        }


        [HttpGet(Name = "GetData")]
        public IEnumerable<Student> Get()
        {
            //查询数据
            return _context.Students.ToList();
        }

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

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

相关文章

国内原汁原味的免费sd训练工具--哩布哩布AI

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 一.体验与操作 1.注册 2.为何可…

享搭低代码平台:加速企业应用开发,轻松搭建表单和报表

在当今快节奏的商业环境中&#xff0c;企业需要快速响应市场需求并提供高效的解决方案。然而&#xff0c;传统的应用开发过程繁琐、耗时&#xff0c;并且需要专业的编程技能。为了解决这些问题&#xff0c;享搭低代码平台应运而生。本文将详细介绍享搭低代码平台的特点和优势&a…

工信部新政策发布,算力基础设施建设即将提速!

前言&#xff1a;算力是集信息计算力、网络运载力、数据存储力于一体的新型生产力&#xff0c;主要通过算力基础设施向社会提供服务。算力基础设施对于实现数字化转型、培育未来产业&#xff0c;以及形成经济发展新动能等方面具有重要作用。 其中&#xff0c;提升算力的高效运载…

内网穿透的应用-轻松玩转群晖生态!使用内网穿透实现本地SSD数据云备份

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是想使用群晖生态软件&#xff0c;就必须要在服务端安装群晖系统&#xff0c;具体如何安装群晖虚拟机请参考&#xff1a; 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv 计算机竞赛

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; Yolov安全帽佩戴检测 危险区域进入检测 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&am…

“地缘危机---通货紧缩风暴来袭,陷入深度困境!“

关于影响通胀动态的因素&#xff0c;我真正关注的是四个主要组成部分: 供应链 商品价格 工资 信用创造 “这些因素使我在2021年和2022年的通胀上升趋势以及2023年的下降趋势中保持正确的立场&#xff0c;因此我继续依赖它们作为未来通胀可能如何演变的指标。 ” …

js继承的几种方式(原型链继承、构造函数继承、组合式继承、寄生组合式继承、ES6的Class类继承)

1.原型链继承 实现原理&#xff1a;子类的原型指向父类实例。子类在自身实例上找不到属性和方法时去它父类实例&#xff08;父类实例和实例的原型对象&#xff09;上查找&#xff0c;从而实现对父类属性和方法的继承 缺点&#xff1a; 子类创建时不能传参&#xff08;即没有…

现货黄金滑点多少是正常的?

在大家熟悉的现货黄金交易软件MT4上&#xff0c;当订单被投放到市场之后&#xff0c;如果之前想要的价格已经不存在&#xff0c;订单就会以最接近其要求的价格执行&#xff0c;如果最终执行价比预期价格要高&#xff0c;则称为正向滑点&#xff0c;反之则为反向滑点。 从理论上…

【Docker】Docker网络及容器间通信详解

目录 背景 默认网络 1、bridge 网络模式 2、host 网络模式 3、none 网络模式 4、container 网络模式 自定义网络 容器间网络通信 IP通信 Docker DNS server Joined容器 前言 本实验通过docker DNS server和joined 容器两种方法实现Docker容器间的通信。Docker容器间…

12个VIM编辑器的高级玩法

vim 是一个很好用的编辑器&#xff0c;应用十分广泛。但关于 vim&#xff0c;总有一些你不知道的事情&#xff0c;我们需要持续不断的学习。 我经常使用 vim&#xff0c;也经常在各大社区、论坛看到 vim 专家用户分享经验&#xff0c;今天我们就总结其中常用的一部分&#xff…

语音识别whisper的介绍、安装、错误记录

介绍 Whisper是OpenAI于2022年9月份开源的通用的语音识别模型。它是在各种音频的大型数据集上训练的模型&#xff0c;也是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。 论文链接&#xff1a;https://arxiv.org/abs/2212.04356 github链接&#xff1a;https:…

4d动感影院座椅5d动感影院体验馆大型7D互动影院

今天来讲一下市场上现在受欢迎的5d7d影院&#xff0c;组成部分&#xff0c;落地方案 5D影院的系统组成部分&#xff1a;1、动感座椅、2、投影幕(银幕)和投影机、3、音箱、4、各种的动感特效、5、5d影院眼镜&#xff0c;很简单的组成硬件&#xff0c;就可以组成一套的5d影院设备…

Windows工业三防平板全功能NFC近距离感应一维/二维扫描

Windows系统工业三防平板电脑是一种在智慧工厂仓储物流、MES数采、车载设备、设备检测、自动化控制等领域广泛应用的先进设备。此外&#xff0c;它还在公共服务领域&#xff0c;如高速交通、物流运输、电力检测、公务执法、银行金融、船舶装备、户外勘测、建筑工程、汽车检测、…

细说晶振元件HC49U的功能、应用及性能特点 | 百能云芯

在电子领域&#xff0c;晶振&#xff08;Crystal Oscillator&#xff09;是一种重要的元件&#xff0c;用于产生稳定的时钟信号。HC49U是一种常见的晶振型号&#xff0c;具有广泛的应用范围。云芯将带您深入探讨HC49U晶振的功能、应用领域&#xff0c;以及其性能特点&#xff0…

【算法-回溯法】N皇后问题

一、问题背景 N皇后问题是由八皇后问题引申而来的。八皇后是一个以国际象棋为背景的问题&#xff0c;国际象棋8*8. 怎么去放置八个皇后&#xff0c;使得任何一个皇后都无法直接吃掉其他的皇后&#xff1f;为了达到此目的&#xff0c;任两个皇后都不能处于同一条横行、纵行或斜…

每日汇评:黄金的回调可能会在周五上涨3%之后延续

在连续两天的积极势头下&#xff0c;金价正挑战1880美元的关键水平&#xff1b; 美元跟随美债收益率走低&#xff0c;美联储持谨慎态度&#xff0c;情绪乐观&#xff1b; 黄金价格正处于关键时刻&#xff0c;等待美国通胀数据带来新的方向性走势&#xff1b; 金价正在回撤上周五…

C# OpenCvSharp 利用Lab空间把春天的场景改为秋天

效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class Form1 : Form{public Form1(){InitializeComponent();}st…

安捷伦N8974A分析仪

安捷伦N8974A分析仪 N8974A 是 Agilent 的二手分析仪。分析仪是测试工程、医疗、汽车和技术行业电子设备的关键工具。使用分析仪来监控许多不同类型的电子设备的性能。您可能需要分析仪来测量音频频谱、电压和电流、信号和频率等分量 频率范围&#xff1a;10 MHz 至 6.7 GHz 一…

前端代码优化之从系统区分处理的业务场景看如何优化代码中的if判断

最近有个三端统一的技术场景&#xff0c;主要是以前移动端的 hybrid 网页在不考虑 UI 适配的情况下、期望能够直接在 PC 客户端投放。在评估修改面的时候发现了一段可以深思的代码&#xff1a; if (platform iphone) {location.href iphoneClientUrl; } else {location.href…