asp.net - 在 Dapper 中处理 Oracle 数据库连接

标签 asp.net asp.net-mvc asp.net-web-api dapper

我正在尝试连接到 Oracle 数据库并尝试执行查询。

下面是我的模型类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;

namespace TestAPI.Models
{
public class TestAPIModel
{
    [Key]
    public int PRIO_CATEGORY_ID { get; set; }
    public int LANG_ID { get; set; }
    public System.DateTime REC_DATE { get; set; }
    public int REC_USER { get; set; }
    public Nullable<int> RFCH_ID { get; set; }
    public string DESCR { get; set; }
    public string COL_DESCR { get; set; }
    public string ROW_DESCR { get; set; }
    public string ABBR { get; set; }
}
}

DBContext 类是

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace TestAPI.Models
{
public class TestAPIContext: DbContext
{
        public DbSet<TestAPIModel> details { get; set; }
}
}

现在尝试使用 Dapper 创建 Controller ,现在问题出现在大多数论坛中,它试图连接到 SQL 数据库。我正在尝试访问 Oracle DB 并以 JSON 格式返回结果。所以如果我给出

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Newtonsoft.Json;
using System.Web.Http.Description;
using TestAPI.Models;
using Dapper;

namespace TestAPI.Controllers
 {
  public class TestAPIModelsController : ApiController
   {
     // GET: api/TestAPIModels
    public IQueryable<TestAPIModel> Getdetails(int id)
    {
      OracleConnection dbConn = new OracleConnection("DATA SOURCE=AX;PASSWORD=CM;PERSIST SECURITY INFO=True;USER ID=AB");
      dbConn.Open();
      var strQuery = @"Select PRIO_CATEGORY_ID as PRIO,LANG_ID as LANG, REC_DATE as REC, REC_USER as RECUSER, DESCR,COL_DESCR AS COL,ROW_DESCR as DROW,ABBR from STCD_PRIO_CATEGORY_DESCR where REC_USER =  " +id;
      retrun dbConn.Query<TestAPIModel>();
      dbConn.Close();
  }
 }
}

它抛出一个错误,指出 dbconn.Query 不在上下文中,我也尝试了 TestAPIContext.Init,即使抛出错误。谁能建议我如何处理 Oracle 与 Dapper 的连接。我是 ASP.NET 和创建服务的新手。有点真的陷入困境,非常感谢任何帮助。

最佳答案

您没有传递 SQL。此外,不需要显式关闭。您可以将代码包装在 SqlConnection.Dispose() 的底层使用中,调用 SqlConnection.Close()。

也许这是一个拼写错误,但“retrun”应该是“return”。连接字符串应该从 app.config 中读取,而不是硬编码,我还考虑将“id”作为参数。

using (var dbConn = new OracleConnection("DATA SOURCE=AX;PASSWORD=CM;PERSIST SECURITY INFO=True;USER ID=AB"))
{
      dbConn.Open();
      var strQuery = @"Select PRIO_CATEGORY_ID as PRIO,LANG_ID as LANG, REC_DATE as REC, REC_USER as RECUSER, DESCR,COL_DESCR AS COL,ROW_DESCR as DROW,ABBR from STCD_PRIO_CATEGORY_DESCR where REC_USER = " +id;
      return dbConn.Query<TestAPIModel>(strQuery);
}

关于asp.net - 在 Dapper 中处理 Oracle 数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38510949/

相关文章:

c# - 使用javascript停止按钮OnClick事件

c# - ABCpdf 5 编码问题(特殊字符)

asp.net-mvc - 将 Telerik Datepicker 添加到动态添加的表单字段

asp.net - HttpClient 可以有多个 HTTP 消息处理程序吗?

c# - 如何在传递到 Controller c# web api 的模型上创建自定义验证消息

asp.net-mvc-4 - 使用 ASP.NET MVC WEB API 项目的 MVC 万无一失验证

asp.net - 如何从一个文本框中获取多个值?

asp.net-mvc - 像 Html.RenderAction() 但没有重新实例化 Controller 对象

json - 将 JSON 发布数据转换为对象数组

c# - ASP.NET Core asp-append-version 属性不适用于 wwwroot 目录之外的静态文件