asp.core webapi连接postgresql数据库

1、如果库里已存在数据库

(1)、appsettings.json下添加连接字符串

  ConnectionStrings: {     PostgreSql: User ID=postgres;Password=xxx;Host=localhost;Port=5432;Database=xx   },

 

(1)、通过NuGet安装Entity Framework并更新文件project.json中“tools”区

Install-Package Npgsql.EntityFrameworkCore.PostgreSQL Install-Package Npgsql.EntityFrameworkCore.PostgreSQL.Design Install-Package Microsoft.EntityFrameworkCore.Tools -Pre

 

(2)、NuGet包管理器运行命令

Scaffold-DbContext “Server=localhost;Database=xx;User ID=postgres;Password=wantgirl;” Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models

 

(3)、已获取数据库表

 

 

 (4)、startup下注入连接字符串

 services.AddDbContext<chdocContext>(option => option.UseNpgsql(Configuration.GetConnectionString(PostgreSql)));            

(5)、需要操作直接调用方法即可

 

 

 

2、如果表里没有库

(1)在Model文件夹下添加Todoitem类

using System; using System.ComponentModel.DataAnnotations; namespace TodoApi.Models {     public class TodoItem     {         /// <summary>         /// 匹配编号         /// </summary>         [Key]         public Guid Gid { get; set; }         /// <summary>         /// 上传文件名         /// </summary>         public string UploadFileName { get; set; }         /// <summary>         /// 上传文件路径         /// </summary>         public string UploadFilePath { get; set; }         /// <summary>         /// 创建时间         /// </summary>         public DateTime CreateTime { get; set; }         /// <summary>         /// 状态 0:匹配中  1:匹配完成未下载 2:匹配完成已下载         /// </summary>         public int Status { get; set; }         /// <summary>         /// 下载文件名         /// </summary>         public string DownloadFileName { get; set; }         /// <summary>         /// 下载文件路径         /// </summary>         public string DownloadFilePath { get; set; }         /// <summary>         /// 下载时间         /// </summary>         public DateTime? DownloadTime { get; set; }         /// <summary>         /// 下载次数         /// </summary>         public int DownLoadCount { get; set; }     } }

 

(2)、NuGet包管理器执行命令(也可以直接添加引用)

Install-Package Npgsql.EntityFrameworkCore.PostgreSQL Install-Package Npgsql.EntityFrameworkCore.PostgreSQL.Design Install-Package Microsoft.EntityFrameworkCore.Tools

 

(3)、将字符串写入appsetting.json

ConnectionStrings: {     PostgreSql: User ID=postgres;Password=postgres;Host=localhost;Port=5432;Database=mydatabase   },

 

(4)、在Model文件夹下添加TodoContext类

using Microsoft.EntityFrameworkCore; namespace TodoApi.Models{     public class TodoContext :DbContext     {         public TodoContext(DbContextOptions<TodoContext> options):base(options){          }         public DbSet<TodoItem> TodoItems {get;set;}          protected override void OnModelCreating(ModelBuilder modelBuilder)         {             base.OnModelCreating(modelBuilder);         }     } }

 

(5)修改startup

 public void ConfigureServices(IServiceCollection services)         {             services.AddDbContext<TodoContext>(option => option.UseNpgsql(Configuration.GetConnectionString(PostgreSql)));         } 

 

(6)、NuGet包管理器执行命令

Add-Migration TodoItem Update-Database

(7)、添加控制器

using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using TodoApi.Models; using System; namespace TodoApi.Controllers {     [Route(api/[controller])]     [ApiController]     public class TodoController : ControllerBase     {         private readonly TodoContext _context;          public TodoController(TodoContext context)         {             _context = context;              if (_context.TodoItems.Count() == 0)             {                 // Create a new TodoItem if collection is empty,                 // which means you can't delete all TodoItems.                 _context.TodoItems.Add(new TodoItem { UploadFileName = Item1 });                 _context.SaveChanges();             }         }         [HttpGet]         public ActionResult<List<TodoItem>> GetAll()         {             return _context.TodoItems.ToList();         }          [HttpGet({gid}, Name = GetTodo)]         public ActionResult<TodoItem> GetById(Guid gid)         {             var item = _context.TodoItems.Find(gid);             if (item == null)             {                 return NotFound();             }             return item;         }     }     }

END

网址方法很多我也总结了下

参考博客

(23条消息) 全栈练习一:asp.net core 2.1 webapi连接postgrest数据库从零开始_henjuewang的博客-CSDN博客

ASP.NET Core 对接已存在的PostgreSQL数据库 | 春小麦 (firstsolver.com)