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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

安装以下NuGet包

Microsoft.EntityFrameworkCore.SqlServerSQL 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();
        }

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6