Ci-dessous, je peux avoir une condition pour exécuter view / table, qui se chargerait dans la classe AccountDataModel.
dbcontext.AccountDataModel.FromSql($"select * from account where id=123").FirstOrDefault();
Comment puis-je récupérer sans utiliser de modèle de classe, si je veux simplement récupérer 1 ou 2 colonnes
exemple: sélectionnez le nom du compte où id = 123
Ai-je toujours besoin d'un modèle de classe?
3 Réponses :
Oui. comme ceci:
var account = dbcontext.AccountDataModel.FromSql(@"select a.id, a.name from account a where a.id=123");
Je ne veux pas utiliser AccoutDataModel, je sais que je peux mapper de sql à ma classe POCO (comme je l'ai mentionné dans l'exemple) Je veux récupérer un exemple de colonne 'nom' à var name = dbcontext.XXXX ....
vous voulez dire quelque chose comme ça: learnentityframeworkcore. com /… ? (section Exploiter ADO.NET via la propriété Context.Database)
Ceci interroge la base de données
var name = dbcontext.GetDBConnection().Query("select name from account where id=123").FirstOrDefault();
@Ben Réponse mise à jour
Je ne parviens pas à obtenir l'instance GetDbConnection () et si j'utilise dbcontext.Database.GetDbConnection (), alors Query (..) est introuvable. Dois-je installer le package NuGet?
ADO.NET fonctionne dans EF Core =)
using Microsoft.EntityFrameworkCore;
using System.Data.Common;
using System.Data.SqlClient;
using System;
public void ExampleMethod(DbContext context)
{
SomeObjectResult result = null;
DbCommand cmd = context.Database.GetDbConnection().CreateCommand();
cmd.CommandText = "Select C.ID, C.CarModelID as ModelID, C.VIN, C.RegNumber,cast(C.CountValue as int) as Course,A.BrandID from A inner join C on A.ID = C.KeyID Where A.ID = @appID";
cmd.Parameters.Add(new SqlParameter("@appID", appointmentID));
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
using (var reader = await cmd.ExecuteReaderAsync())
{
if (reader.Read())
{
result = new SomeObjectResult()
{
BrandID = (int)reader["BrandID"],
Course = (int)reader["Course"],
ID = (int)reader["ID"],
ModelID = (int?)reader["ModelID"],
RegNumber = (string)reader["RegNumber"],
VIN = (string)reader["VIN"]
};
}
}
}