No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Pomelo.EntityFrameworkCore.Extensions.ToSql
Sample
.gitignore
LICENSE
Pomelo.EntityFrameworkCore.Extensions.ToSql.sln
README.md

README.md

Pomelo.EntityFrameworkCore.Extensions.ToSql

Sample

image

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();
        }
    }
}