Created
May 10, 2018 17:32
-
-
Save nicolasguzca/9bb32e47a9fa93d3eed56c3c008eac0e to your computer and use it in GitHub Desktop.
Using dbcontext raw query .NetCore
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.EntityFrameworkCore.Infrastructure; | |
using Microsoft.EntityFrameworkCore.Internal; | |
using Microsoft.EntityFrameworkCore.Storage; | |
using System.Threading; | |
using System.Threading.Tasks; | |
namespace yournamespace.Data | |
{ | |
public static class RDFacadeExtensions | |
{ | |
public static RelationalDataReader ExecuteSqlQuery(this DatabaseFacade databaseFacade, string sql, params object[] parameters) | |
{ | |
var concurrencyDetector = databaseFacade.GetService<IConcurrencyDetector>(); | |
using (concurrencyDetector.EnterCriticalSection()) | |
{ | |
var rawSqlCommand = databaseFacade | |
.GetService<IRawSqlCommandBuilder>() | |
.Build(sql, parameters); | |
return rawSqlCommand | |
.RelationalCommand | |
.ExecuteReader( | |
databaseFacade.GetService<IRelationalConnection>(), | |
parameterValues: rawSqlCommand.ParameterValues); | |
} | |
} | |
public static async Task<RelationalDataReader> ExecuteSqlQueryAsync(this DatabaseFacade databaseFacade, | |
string sql, | |
CancellationToken cancellationToken = default(CancellationToken), | |
params object[] parameters) | |
{ | |
var concurrencyDetector = databaseFacade.GetService<IConcurrencyDetector>(); | |
using (concurrencyDetector.EnterCriticalSection()) | |
{ | |
var rawSqlCommand = databaseFacade | |
.GetService<IRawSqlCommandBuilder>() | |
.Build(sql, parameters); | |
return await rawSqlCommand | |
.RelationalCommand | |
.ExecuteReaderAsync( | |
databaseFacade.GetService<IRelationalConnection>(), | |
parameterValues: rawSqlCommand.ParameterValues, | |
cancellationToken: cancellationToken); | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Execute a query. | |
using(var dr = await db.Database.ExecuteSqlQueryAsync("SELECT ID, Credits, LoginDate FROM SamplePlayer WHERE " + | |
"Name IN ('Electro', 'Nitro')")) | |
{ | |
// Output rows. | |
var reader = dr.DbDataReader; | |
while (reader.Read()) | |
{ | |
Console.Write("{0}\t{1}\t{2} \n", reader[0], reader[1], reader[2]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment