With Entity Framework Core removing dbData.Database.SqlQuery
I can\'t find a solution to build a raw SQL Query for my full-text search query th
You can use this (from https://github.com/aspnet/EntityFrameworkCore/issues/1862#issuecomment-451671168 ) :
public static class SqlQueryExtensions
{
public static IList SqlQuery(this DbContext db, string sql, params object[] parameters) where T : class
{
using (var db2 = new ContextForQueryType(db.Database.GetDbConnection()))
{
return db2.Query().FromSql(sql, parameters).ToList();
}
}
private class ContextForQueryType : DbContext where T : class
{
private readonly DbConnection connection;
public ContextForQueryType(DbConnection connection)
{
this.connection = connection;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// switch on the connection type name to enable support multiple providers
// var name = con.GetType().Name;
optionsBuilder.UseSqlServer(connection, options => options.EnableRetryOnFailure());
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasNoKey();
base.OnModelCreating(modelBuilder);
}
}
}
And the usage:
using (var db = new Db())
{
var results = db.SqlQuery("select 1 id, 'joe' name");
//or with an anonymous type like this
var results2 = db.SqlQuery(() => new { id =1, name=""},"select 1 id, 'joe' name");
}