J'essaie de me connecter à la base de données Oracle et d'essayer d'exécuter une requête.
Donc, voici ma classe de modèle
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; }
}
}
La classe DBContext est
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; }
}
}
Maintenant, en essayant de créer le contrôleur avec le Dapper, le problème réside maintenant dans la plupart des forums qu'il tente de se connecter à la base de données SQL. J'essaie d'accéder à Oracle DB et retourner le résultat au format JSON .So si je donne
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();
}
}
}
Il jette une erreur en disant que le dbconn.Query n'est pas en contexte et j'ai aussi essayé TestAPIContext.Init même qui jette une erreur. Quelqu'un peut-il s'il vous plaît me suggérer comment traiter la connexion Oracle avec le Dapper. Je suis nouveau sur ASP.NET et la création des services. sorte de vraiment coincé, toute aide est grandement appréciée.
Vous ne passiez pas le SQL. De plus, la fermeture explicite n'est pas nécessaire. Vous pouvez encapsuler le code dans une utilisation comme sous le capot SqlConnection.Dispose () appelle SqlConnection.Close ().
Peut-être que c'est une faute de frappe, mais "retrun" devrait être "return". La chaîne de connexion doit être lue à partir de app.config par rapport au code dur et j'envisagerais également de faire de 'id' un paramètre.
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);
}
Je pourrais gérer cela avec la solution suivante:
1. Installez Oracle.ManagedDataAccess.Core
Forfait à partir de NuGet.
2. Ecrivez ConnectionString comme suit:
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521))(CONNECT_DATA=(SID=sidName))); User Id=*****; Password=******;
PORT=1521
=> Le port par défaut d'Oracle est 1521, vous pouvez le changer avec votre port de serveur Oracle.
0.0.0.0
=> IP ou nom du serveur Oracle
sidName
=> SidName du serveur Oracle
3. Code d'extrait C #:
protected IDbConnection GetChargingOracleDbConnection
{
get
{
var oracleConnection = new OracleConnection("OracleConnectionString");
oracleConnection.Open();
return oracleConnection;
}
}
var query = "SELECT Id, Name FROM Service";
using (var dbConnection = GetChargingOracleDbConnection)
{
return dbConnection.Query<MyModel>(query).ToList();
}