2016-07-21 1 views
1

Oracle 데이터베이스에 연결하여 쿼리를 실행하려고합니다. 그래서 아래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; } 
} 
} 

는 이제 말끔와 컨트롤러, 이제 문제는이를 시도하는 포럼의 가장 인을 만들려고하다 SQL 데이터베이스에 연결하십시오. 나는 오라클 DB를 액세스하고 내가

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 시도 없다는 오류가 발생합니다 주면 JSON 형식 낭포의 결과를 반환하는 것을 시도하고있다 오류. 누구나 Dapper와 Oracle 연결을 처리하는 방법을 제안 해 줄 수 있습니까? 저는 ASP.NET과 서비스 생성에 익숙하지 않습니다. 정말 붙어있는 종류의 어떤 도움을 크게 주시면 감사하겠습니다.

+0

"retrun"이 "return"으로 변경되어야합니다. –

답변

2

SQL을 전달하지 않았습니다. 또한 명시 적 종료는 필요하지 않습니다. SqlConnection.Dispose()는 SqlConnection.Close()를 호출하여 코드를 래핑 할 수 있습니다.

아마도 이것은 오타이지만 "retrun"은 "return"이어야합니다. ConnectionString은 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); 
} 
+0

Thanks Williams. 그러나 코드는 var에 오류를 발생시킵니다. queryResult = dbConn.Query (); 오류 'queryReult'이름이 현재 컨텍스트에 없습니다. 또한 반환 쿼리에서 Result as Error 'Query'메서드에 대한 오버로드가 없습니다. 그것은 클래스의 유형이 문자열이 아니기 때문에 공용이므로 IQueryable Getdetails (int id) – trx

+0

그렇습니다. –

+0

업데이트 된 답변보기 당신은 SQL을 통과하지 못했습니다. –