首页 > 数据库 >EFCore连接PostgreSql

EFCore连接PostgreSql

时间:2023-04-02 13:57:23浏览次数:37  
标签:MyDbContext PostgreSql System public EFCore services using ProcessProperty 连接

1、PostgreSql安装(windows安装)

  1.1、下载  

    下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

    如下图,选择windows版本的安装包下载

  

   1.2、安装

    直接双击安装,期间会让你选择安装路径,数据存储路径,默认密码,端口等信息,可以按照需求填写,也可以直接使用默认地址安装。

    注意:默认密码一定要记住,第一次连接的时候会要求修改,默认端口5432,一般不用修改

2、使用EF连接pgsql

  2.1、使用vs新建一个项目,这里使用winform作为例子

  2.2、通过nuget引入Npgsql.EntityFrameworkCore.PostgreSQL

  

   2.3、创建MyDbContext

using Microsoft.EntityFrameworkCore;
using ProcessProperty.Entity;

namespace ProcessProperty
{
    public class MyDbContext : DbContext
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="options"></param>
        public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
        {

        }

        /// <summary>
        /// Version表
        /// </summary>
        public DbSet<VersionEntity> VersionEntity { get; set; }
    }
}

  2.4、使用注入的方式注入MyDbContext(包括了其他service的注入)

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using ProcessProperty.service;

namespace ProcessProperty
{
    internal static class Program
    {
        /// <summary>
        ///  The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // To customize application configuration such as set high DPI settings or default font,
            // see https://aka.ms/applicationconfiguration.
            ApplicationConfiguration.Initialize();

            // 添加 json 文件路径,注意 appsettings.json 文件属性一定要设置始终复制
            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
            var config = builder.Build();

            // 创建服务容器
            var services = new ServiceCollection();
            // 添加服务注册
            ConfigureServices(services);
            // 添加MyDbContext注入
            services.AddDbContext<MyDbContext>(
                option => option.UseNpgsql(config.GetConnectionString("PGSqlConnectionString"))
                );
            //先用DI容器生成 serviceProvider, 然后通过 serviceProvider 获取Main Form的注册实例
            var serviceProvider = services.BuildServiceProvider();
            //主动从容器中获取FormMain实例, 这是简洁写法
            var formMain = serviceProvider.GetRequiredService<Form1>();
            Application.Run(formMain);
        }

        /// <summary>
        /// 注入服务
        /// </summary>
        /// <param name="services"></param>
        public static void ConfigureServices(IServiceCollection services)
        {
            //批量注入可以使用Scrutor或者自己封装
            services.AddScoped<IProcessDataService, ProcessDataService>();

            services.AddScoped(typeof(Form1));
        }
    }
}

    appsetting.json

{
  "ConnectionStrings": {
    "PGSqlConnectionString": "server=localhost;port=5432;user id=postgres;password=postgres;database=app-version"
  }
}

  2.5、创建相应的Entity实体(数据表)

    主意:创建完成之后,要将其加入到MyDbContext

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProcessProperty.Entity
{
    [Table("version")]
    public class VersionEntity
    {
        [Column("id")]
        public Guid Id { get; set; }
        [Column("name")]
        public string? Name { get; set; }
    }
}

  2.6、使用

    使用构造函数注入方式注入,然后就按照正常的方式可以进行curl操作

public MyDbContext _myDbContext;

public ProcessDataService(MyDbContext myDbContext)
    {
        _myDbContext = myDbContext;
    }

 

标签:MyDbContext,PostgreSql,System,public,EFCore,services,using,ProcessProperty,连接
From: https://www.cnblogs.com/smj-7038/p/17280087.html

相关文章

  • kafka(java客户端)生产者消费者不能连接虚拟机kafka
    报错如下:...:localhost:9092...java.net.ConnectException:Connectionrefused:nofurtherinformationatsun.nio.ch.SocketChannelImpl.checkConnect(NativeMethod)atsun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)atorg.apac......
  • 远程服务器(腾讯云轻量服务器)上安装SQL Server以及SQL Server Management Studio,以及EF
    SQLServer的安装下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads安装教程参考:https://blog.csdn.net/qq_51929833/article/details/122625809其中,这一步非常关键,因为在后续SSMS中,选用"SQLServer身份验证"时候的密码,默认用户名都是"sa"SQLServe......
  • abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3下(五十九)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+eas......
  • 每日总结--2023/3/31(解决了数据库连接不正常的问题,完成了javaweb暂时的配置)
    今天耗费一天的时间总算是找到了问题所在.问题出在mysqlServlet的版本上。在重装系统前,我所装的mysqlSevlet版本是5.0左右的,所以连接数据库的驱动也是5.0,包括url,而在重装系统后我的mysqlSevlet版本是8.0以上的,所以用原来的语句是不正确的,要修改为8.0版本的才能够运行,同......
  • Ubuntu 无法连接Xshell
    情况刚下载ubuntu,正确输入账号和密码发现没法打开xshell原因没有安装和开启对应的服务解决方法直接在终端中执行下面的语句sudoapt-getinstallsshsudoapt-getinstallopenssh-server之后在Xshell中正确输入账号和密码就可以了.如果还不行,请先禁用VMnet8,然后等......
  • PostgreSQL 13 pacemaker 高可用集群
    环境介绍 操作系统版本CentOSLinuxrelease7.8.2003(Core)  数据库版本psql(13.10)  PCS集群版本[root@hd-clw-select-proxysql01~]# rpm-qa|greppacemakerpacemaker-libs-1.1.23-1.el7_9.1.x86_64pacemaker-cli-1.1.23-1.el7_9.1.x86_64pacemaker-1.1.2......
  • HTTP协议之基本认证&HTTP中长连接与短连接
    HTTP协议之基本认证常见认证方式BASIC认证(基本认证)DIGEST认证(摘要认证)SSL客户端认证FormBase认证(基于表单认证)  DIGEST认证什么是DIGEST认证为弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证DIGEST认证同样使用质询/响应的方......
  • 4·2HTTP协议中的编码和解码、4·3协议之基本认证、4·4中长连接与短连接、4·5中介之
     。。Http协议中的编码和解码YRL的编码与解码%编码规范对URL中属于ASCII字符集的非保证留字不做编码;对URII中的保留字需要取其ASXII内码,然后加上%前缀将该字符进行编码;对于URL中的非ASCII字符需要取其Unicode内码然后加上%前缀将该字......
  • 【Linq】 左连接、右连接、内链接
    左外部联接可以看到和直接内连接的join差距在多了into,把可能为空的那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取   stocksinfo表格   packetassociationstocks表格实现 stocksinfo表格和packetassociationstocks表格的左外......
  • 《Mysql基础》【Mysql表查询、去重、表连接、左连接 右连接、子表查询、排序、分组等
     --mysql数据库程序设计笔记:第三章:查询1、单表查询:1)、简单查询查所有列:格式:select*from表名;举例:mysql>select*fromtb_student;+----+-----------+-------------+------+------------+----------+--------+---------+-------------------+|id|studentNo|s......