当前位置:   article > 正文

.Net6 配置EntityFrameworkCore_entitydeveloper .net6

entitydeveloper .net6

配置EF时候我们可以选择新建一个Models类库和项目分离出来,也可以直接在项目里面新建一个Models文件夹,进行存放我们的实体。上述两个方案中,第一个比第二个复杂一点点,所以,我就拿第一个做示例。创建一个与项目分离的实体层。

一、新建一个类库,用来存放我们的实体

在类库项目里面需要添加NutGet包⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

Microsoft.EntityFrameworkCore.SqlServer

 二、添加我们的实体

我这里用Users做一个示例里面就是单纯的和数据库字段对应的实体模型

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace Models
  9. {
  10. [Table("Users")]
  11. public class Users
  12. {
  13. /// <summary>
  14. /// id
  15. /// </summary>
  16. [Key]
  17. public Guid Uid { get; set; } = Guid.Empty;
  18. /// <summary>
  19. /// 名称
  20. /// </summary>
  21. public string UName { get; set; } = string.Empty;
  22. /// <summary>
  23. /// 密码
  24. /// </summary>
  25. public string Pwd { get; set; } = string.Empty;
  26. }
  27. }

三、新建一个类,书写我们的上下文

  1. using Microsoft.EntityFrameworkCore;
  2. namespace Models
  3. {
  4. public class DbEntitys: DbContext
  5. {
  6. /// <summary>
  7. /// 配置连接字符串,每次访问数据库之前会自动执行此方法,在这里配置连接字符串
  8. /// 相当于连接前事件
  9. /// 使用 IOC 注入的方式不实现此方法
  10. /// </summary>
  11. /// <param name="builder"></param>
  12. protected override void OnConfiguring(DbContextOptionsBuilder builder)
  13. {
  14. // 连接字符串
  15. string ConnString = "连接字符串";
  16. // 连接SqlServer
  17. builder.UseSqlServer(ConnString);
  18. // 连接MySql
  19. //builder.UseMySql(ConnString,new MySqlServerVersion(new Version()));
  20. }
  21. /// <summary>
  22. /// 默认构造函数 使用方法与原来一样
  23. /// </summary>
  24. public DbEntitys() : base() { }
  25. /// <summary>
  26. /// 通过IOC
  27. /// </summary>
  28. /// <param name="options"></param>
  29. public DbEntitys(DbContextOptions<DbEntitys> options) : base(options)
  30. { }
  31. #region 表映射
  32. //把我们的实体给映射一下,方便我们后面调用,有几个实体就映射几个实体,写法一样
  33. public DbSet<Users> Users { get; set; }
  34. //public virtual DbSet<Tab2> Tab2 { get; set; }
  35. #endregion
  36. }
  37. }

四、同上一样,只不过是自动生成

上面操作弄好之后我们的类库就弄完了,上面方法是需要自己手写的,大家直接复制我的就行,大家如果不想手写的话,也可以让他自己生成。自己生成的话,需要下载的NutGet包就会多一点。需要装一个

Microsoft.EntityFrameworkCore.Tools

 通过命令安装是⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

  1. 打开 Visual Studio,并打开您的项目。
  2. 打开控制台窗口("视图" -> "其他窗口" -> "包管理器控制台")
  3. 在控制台窗口中,输入以下命令并按 Enter 键:

Install-Package Microsoft.EntityFrameworkCore.Tools

 安装完成后,您可以使用 Scaffold-DbContext 命令生成实体类。例如,以下命令将从名为 MyDatabase 的 SQL Server 数据库中生成实体类并将其放在 Models 文件夹中:

Scaffold-DbContext "Server=myServerAddress;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
 

 上述命令是生成所有表实体,如果不想生成所有表实体,可以生成单个实体

Scaffold-DbContext "Server=myServerAddress;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables MyTable
 

 这将从名为 MyDatabase 的 SQL Server 数据库中生成 MyTable 表的实体类,并将其放在 Models 文件夹中。您可以将 MyTable 替换为要生成实体类的表名

 五、配置项目

在项目里,我这里用的是.Net Core 6版本的项目,我这里就用这个演示

在上面几个步骤弄好类库之后,我这里需要在Program里面进行注入一下,通过IOC容器大同和数据库的连接

在Program里面注入一下⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

  1. var builder = WebApplication.CreateBuilder(args);
  2. //写到这句下面
  3. //⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
  4. var ConnString = "连接字符串";
  5. //注入
  6. builder.Services.AddDbContext<DbEntitys>(x => x.UseSqlServer(ConnString));

1、新建一个控制器用来写构造函数方便我们调用

我这里创建了一个名叫BaseController的控制器

  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Models;
  4. namespace RedisCeShi.Controllers
  5. {
  6. public class BaseController : ControllerBase
  7. {
  8. /// <summary>
  9. /// 数据库操作实例
  10. /// </summary>
  11. public readonly DbEntitys _db;
  12. /// <summary>
  13. /// 构造函数获取实例
  14. /// </summary>
  15. /// <param name="db"></param>
  16. public BaseController(DbEntitys db)
  17. {
  18. _db = db;
  19. }
  20. }
  21. }

在里面写上我们的构造函数,我们哪个控制器需要操作数据库就继承一下这个控制器,然后生成一下构造函数就行了

如下:⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.AspNetCore.Mvc.ViewFeatures;
  4. using Microsoft.Data.SqlClient;
  5. using Microsoft.EntityFrameworkCore;
  6. using Microsoft.OpenApi.Models;
  7. using Models;//添加引用
  8. using RedisCeShi.Common;
  9. using RedisCeShi.Model;
  10. namespace RedisCeShi.Controllers
  11. {
  12. [Route("api/[controller]/[action]")]
  13. [ApiController]
  14. //继承我们刚才写的哪个控制器
  15. public class ZSGCeShiController : BaseController
  16. {
  17. //生成构造函数,打通连接
  18. public ZSGCeShiController(DbEntitys db) : base(db)
  19. {
  20. }
  21. /// <summary>
  22. /// 测试
  23. /// </summary>
  24. /// <returns></returns>
  25. [HttpGet]
  26. public async Task<ActionResult> GetUsers()
  27. { //实现调用
  28. var list = await _db.Users.ToListAsync();
  29. return Ok(list);
  30. }
  31. }
  32. }

以上就是.Net Core 6连接数据库的分离操作。写完后,我们别的控制器只需要继承BaseController控制器就可以了,就可以拿到_db数据实体

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号