2016-07-21 4 views
1

Oracle Databaseに接続して問合せを実行しようとしています。そこで、以下DapperでのOracle Database Connectionの処理

は私のモデルクラスである

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クラス

今Dapperのとコントローラーを作成しようとして
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データベースに接続します。私は

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形式。だからでOracle DBにアクセスし、結果を返すようにしようとしていますエラー。誰でもDapperとのOracle接続を扱う方法を教えてください。私はASP.NETとサービスの作成を初めて学びます。本当に立ち往生のようなもの、どんな助けも大歓迎です。

+0

"retrun"を "return"に変更する必要があります。 –

答えて

2

あなたはSQLを渡していませんでした。また、明示的な終了は必要ありません。 SqlConnection.Dispose()は、SqlConnection.Close()を呼び出してコードをラップすることができます。

これはおそらくタイプミスですが、 "retrun"は "return"である必要があります。接続文字列は、app.configとハードコード化されたものとの間で読み取られなければならず、私も 'id'をパラメータにすることを検討します。

+0

ありがとうございました。しかし、コードはvar queryResult = dbConn.Query ();でエラーをスローします。エラー 'queryReult'という名前は現在のコンテキストに存在しません。また、返されたクエリーの結果Result as Errorクエリーのオーバーロードがありません。これは、クラスの型が文字列ではなく、パブリックであるためです。IQueryable Getdetails(int id) – trx

+0

右のように、あなたが戻ってきます。 –

+0

私の更新された答えを見てください。あなたはSQLを渡していませんでした。 –