Pomelo.EntityFrameworkCore.Extensions.ToSql
using System;
using System. Linq;
using Microsoft. EntityFrameworkCore;
namespace Sample
{
enum Sex
{
Male ,
Female
}
class TestModel
{
public Guid Id { get ; set ; }
public string Title { get ; set ; }
public int Count { get ; set ; }
public Sex Sex { get ; set ; }
public DateTime Time { get ; set ; }
}
class SqlServerContext : DbContext
{
public DbSet < TestModel > Models { get ; set ; }
protected override void OnConfiguring ( DbContextOptionsBuilder optionsBuilder )
{
base . OnConfiguring ( optionsBuilder) ;
optionsBuilder. UseSqlServer ( " Server=localhost;uid=sa;pwd=123456;database=tosqltest" ) ;
}
}
class MySqlContext : DbContext
{
public DbSet < TestModel > Models { get ; set ; }
protected override void OnConfiguring ( DbContextOptionsBuilder optionsBuilder )
{
base . OnConfiguring ( optionsBuilder) ;
optionsBuilder. UseMySql ( " Server=localhost;uid=root;pwd=123456;database=tosqltest" ) ;
}
}
class PostgreSQLContext : DbContext
{
public DbSet < TestModel > Models { get ; set ; }
protected override void OnConfiguring ( DbContextOptionsBuilder optionsBuilder )
{
base . OnConfiguring ( optionsBuilder) ;
optionsBuilder. UseNpgsql ( " Server=localhost;uid=postgres;pwd=123456;database=tosqltest" ) ;
}
}
class GroupType
{
public Sex Key { get ; set ; }
public int Count { get ; set ; }
}
class Program
{
static void Main ( string [ ] args )
{
var SqlServerContext = new SqlServerContext( ) ;
var SqlServerQuery = SqlServerContext. Models
. Where ( x => x. Title. Contains ( " Pomelo" ) )
. Where ( x => new [ ] { 2 , 3 , 5 , 7 , 11 } . Contains ( x. Count) )
. Where ( x => x. Title. Skip ( 3 ) . Take ( 4 ) . ToString ( ) == " Hello" ) ;
Console. WriteLine ( " SQL Server Generated:" ) ;
Console. WriteLine ( SqlServerQuery. ToSql ( ) ) ;
Console. WriteLine ( " Unevaluated:" ) ;
Console. WriteLine ( string . Join (
Environment. NewLine,
SqlServerQuery
. ToUnevaluated ( ) ) ) ;
Console. WriteLine ( ) ;
var MySqlContext = new MySqlContext( ) ;
var MySqlQuery = MySqlContext. Models
. Where ( x => x. Title. Contains ( " Pomelo" ) )
. Where ( x => new [ ] { 2 , 3 , 5 , 7 , 11 } . Contains ( x. Count) ) ;
Console. WriteLine ( " MySQL Generated:" ) ;
Console. WriteLine ( MySqlQuery. ToSql ( ) ) ;
Console. WriteLine ( " Unevaluated:" ) ;
Console. WriteLine ( string . Join (
Environment. NewLine,
MySqlQuery
. ToUnevaluated ( ) ) ) ;
Console. WriteLine ( ) ;
var PostgreSQLContext = new PostgreSQLContext( ) ;
var PostgreSQLQuery = PostgreSQLContext. Models
. Where ( x => x. Title. Contains ( " Pomelo" ) )
. Where ( x => new [ ] { 2 , 3 , 5 , 7 , 11 } . Contains ( x. Count) )
. GroupBy ( x => x. Sex )
. Select ( x => new GroupType { Key = x. Key, Count = Math. Abs ( x. Count ( ) ) } ) ;
Console. WriteLine ( " PostgreSQL Generated:" ) ;
Console. WriteLine ( PostgreSQLQuery. ToSql ( ) ) ;
Console. WriteLine ( " Unevaluated:" ) ;
Console. WriteLine ( string . Join (
Environment. NewLine,
PostgreSQLQuery
. ToUnevaluated ( ) ) ) ;
Console. WriteLine ( ) ;
Console. Read ( ) ;
}
}
}