ASP.NET CORE 5.0 API 教程:结合Postgresql实战

版权申诉
0 下载量 124 浏览量 更新于2024-09-08 收藏 391KB DOCX 举报
"ASP.NET CORE 5.0 API与Postgresql实战示例,通过Microsoft Visual Studio 2019实现Web应用创建,数据模型设计以及添加必要的NuGet包以支持数据库交互。" 在ASP.NET CORE 5.0 API开发中,结合Postgresql数据库,可以构建高效且灵活的Web服务。下面我们将详细探讨如何实现这个过程: 首先,创建Web应用: 1. 打开Microsoft Visual Studio 2019,选择“创建新项目”选项。 2. 在弹出的“新建项目”对话框中,挑选“ASP.NET Core Web应用程序”,然后点击“下一步”。 3. 在“配置新项目”界面,输入项目名称“MvcMovie”(注意大小写,因为后续代码会依赖于命名空间的匹配),然后选择“创建”。 4. 接着在“创建新的ASP.NET Core Web应用程序”窗口,确保框架选择为“.NET Core”和版本为“ASP.NET Core 5.0”,并选择“ASP.NET Core Web API”模板,点击“创建”。 接下来,定义数据模型: 1. 在“解决方案资源管理器”中,为项目创建一个名为“Models”的新文件夹。 2. 右键点击“Models”文件夹,选择“添加”>“类”,新建名为“Movie”的类。 3. 在“Movie”类中,我们定义了属性如`Id`, `Title`, `ReleaseDate`, `Genre`, `Price`, 和 `Rating`,并使用了`DataAnnotations`来提供验证和显示控制,例如`[Display]`用于自定义显示名,`[DataType]`用于指定数据类型(这里是日期),以及`[Column]`来设置数据库列的类型(如`decimal(18,2)`对应数据库的decimal字段)。 安装必要的NuGet包是连接到Postgresql数据库的关键: 1. 通过“工具”菜单,进入“NuGet包管理器”> “包管理器控制台”(PMC)。 2. 在PMC中,依次运行以下命令安装必要的包: - `Install-Package Microsoft.EntityFrameworkCore`:这是Entity Framework Core的基本包,用于数据库操作。 - `Install-Package Microsoft.EntityFrameworkCore.Tools`:提供EF Core的命令行工具,方便数据库迁移等操作。 - `Install-Package Npgsql.EntityFrameworkCore.PostgreSQL`:这是用于连接和操作Postgresql数据库的EF Core提供程序。 完成上述步骤后,你需要配置数据库连接字符串并在`Startup.cs`中添加服务注册,以便在ASP.NET Core应用中使用EF Core。接着,创建数据库上下文类,继承自`DbContext`,包含对`Movie`实体的引用,并在其中配置数据库连接。最后,你可以使用EF Core的命令行工具执行数据库迁移,创建对应的Postgresql表结构。 通过这种方式,你已经成功地在ASP.NET CORE 5.0 API项目中集成了Postgresql数据库,可以进行CRUD(创建、读取、更新、删除)操作。这是一个基础但完整的例子,实际开发中可能还需要处理更多细节,如错误处理、身份验证、API路由和控制器设计等。

3765209 [Druid-ConnectionPool-Create-146186969] com.alibaba.druid.pool.DruidDataSource.run:2815| create connection SQLException, url: jdbc:postgresql://10.251.150.35:5432/adverse, errorCode 0, state 08001 org.postgresql.util.PSQLException: Connection to 10.251.150.35:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:285) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:217) at org.postgresql.Driver.makeConnection(Driver.java:458) at org.postgresql.Driver.connect(Driver.java:260) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:118) at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:764) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112) at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:232) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1645) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1709) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2813) Caused by: java.net.ConnectException: 拒绝连接 (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:607) at org.postgresql.core.PGStream.<init>(PGStream.java:81) at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:93) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197)

2023-07-13 上传