C# 使用Oracle数据库的.Net核心API-如何选择返回类型并将OracleCommand结果转换为这些类型
我已经花了两天多的时间,但我还没有找到一些东西来清楚地解释如何使用oracle数据库在.NET Core中创建API,因为我发现关于这个主题的信息很少 我需要一些耐心,我是.NETCore的noob,oracle让我更难使用oracle数据库 我希望有人能指导我完成这个过程 我遵循了下一个教程: 我可以成功地创建API,问题是该API不能与oracle数据库一起工作,这是我无法更改的要求 到目前为止,我所做的是:C# 使用Oracle数据库的.Net核心API-如何选择返回类型并将OracleCommand结果转换为这些类型,c#,oracle,asp.net-core,return-type,C#,Oracle,Asp.net Core,Return Type,我已经花了两天多的时间,但我还没有找到一些东西来清楚地解释如何使用oracle数据库在.NET Core中创建API,因为我发现关于这个主题的信息很少 我需要一些耐心,我是.NETCore的noob,oracle让我更难使用oracle数据库 我希望有人能指导我完成这个过程 我遵循了下一个教程: 我可以成功地创建API,问题是该API不能与oracle数据库一起工作,这是我无法更改的要求 到目前为止,我所做的是: 我创建了一个.NET核心项目并选择了API 我创建了一个Models文件夹并创建
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace OracleAPI.Models
{
public class Employee
{
[Key]
public int EMPLOYEE_ID { get; set; }
[Required]
public string FIRST_NAME { get; set; }
[Required]
public string LAST_NAME { get; set; }
[Required]
public string EMAIL { get; set; }
[Required]
public string PHONE_NUMBER { get; set; }
[Required]
public string HIRE_DATE { get; set; }
public int JOB_ID{ get; set; }
public double SALARY { get; set; }
public double COMMISSION_PCT { get; set; }
public int MANAGER_ID { get; set; }
public int DEPARTMENT_ID { get; set; }
}
}
我的API控制器如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OracleAPI.Models;
using Oracle.ManagedDataAccess.Client;
namespace OracleAPI
{
[Route("api/[controller]")]
[ApiController]
public class APIController : ControllerBase
{
public string conString = "User Id=HR;Password=HR;Data Source=localhost:1521/xe";
public static Oracle.ManagedDataAccess.Client.OracleConnection con;
public APIController()
{
con = new OracleConnection(conString);
}
//This is the part where Im stuck
[HttpGet]
public async Task<ActionResult<Employee>> GetEmployees()
{
using (con)
{
try
{
using (OracleCommand cmd = new OracleCommand())
{
con.Open();
cmd.BindByName = true;
cmd.CommandText = "SELECT * FROM employees";
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
//await context.Response.WriteAsync("This part is obviously going to be removed but it's commented here to show why I chose this method to by an async task and this was in the example of the connection to the oracle database");
}
}
}
catch (Exception ex)
{
return null;
}
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Mvc;
使用OracleAPI.模型;
使用Oracle.ManagedDataAccess.Client;
名称空间Oraclepi
{
[路由(“api/[控制器]”)]
[ApiController]
公共类APIController:ControllerBase
{
public string conString=“User Id=HR;Password=HR;Data Source=localhost:1521/xe”;
公共静态Oracle.ManagedDataAccess.Client.OracleConnection con;
公共APIController()
{
con=新的OracleConnection(构造);
}
//这就是我被卡住的地方
[HttpGet]
公共异步任务GetEmployees()
{
使用(con)
{
尝试
{
使用(OracleCommand cmd=new OracleCommand())
{
con.Open();
cmd.BindByName=true;
cmd.CommandText=“从员工中选择*”;
OracleDataReader=cmd.ExecuteReader();
while(reader.Read())
{
//wait context.Response.WriteAsync(“这一部分显然将被删除,但此处对其进行了注释,以说明我为什么选择此方法来处理异步任务,这是连接到oracle数据库的示例”);
}
}
}
捕获(例外情况除外)
{
返回null;
}
}
}
}
}
当我必须选择返回类型时,问题基本上就出现了,我尝试使用JSONResult,但我没有成功地将我的阅读器结果转换为Json,也无法使用教程中使用的EntityFrameworkCore时使用的相同返回类型
我希望您能引导我走正确的道路,不仅了解如何根据我执行的操作(创建、读取、更新、删除)(Post、Get、Put、Delete)选择正确的返回类型,还了解如何将OracleCommand结果转换为该返回类型
注意:我使用Oracle database 18c Express Edition,创建API的目的是因为我需要使用Xamarin项目中的API,并且由于Oracle nuget不适用于iOS,因此我最好创建API
非常感谢你的帮助。我将感谢任何人能提供的任何帮助 您的调试器是否在(reader.Read())阶段到达
?请帮个忙并使用它。@LajosArpad是的。@Stefan谢谢,我现在就检查它。所以您有数据,但不知道如何转换它?