ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

asp.core webapi连接postgresql数据库

2022-04-30 18:35:14  阅读:203  来源: 互联网

标签:webapi core asp get EntityFrameworkCore set context using public


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)

 

标签:webapi,core,asp,get,EntityFrameworkCore,set,context,using,public
来源: https://www.cnblogs.com/dongzi1997/p/16210865.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有