【C#】查看ORM生成的SQL语句的几种方式

EF

IQueryable.ToString()

返回IQueryable类型, 里面封装的就是生成的SQL脚本,设置断点queryable = DataContext.Set().Where(whereLambda).AsQueryable();
queryable 右键快速监视, 或者ToString()返回字符串类型直接打印输出都能看到sql脚本。

ObjectQuery.ToTraceString()

var query = db.TxtRes.Join(db.LangRes, a => new { id1 = a.ResID, id2 = a.ResID }, b => new { id1=b.ID,id2=b.ID }, (a, b) => new { a.ID, a.ResID, a.Lang, b.Key });

var objectQuery = query as System.Data.Objects.ObjectQuery;
return objectQuery.ToTraceString(); //获取sql语句

EF Core

LoggerFactory

在Startup加上

        public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] {
            new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
        });

然后在ConfigureServices里添加数据库上下文的时候 加上.UseLoggerFactory(MyLoggerFactory);即可

   //添加mysql数据库上下文
            services.AddDbContext<HotelProdDbContext>(Options =>
            {
                Options.UseMySql(Configuration.GetConnectionString("MysqlHotelProd")).UseLoggerFactory(MyLoggerFactory);
            });

【C#】查看ORM生成的SQL语句的几种方式_第1张图片
【C#】查看ORM生成的SQL语句的几种方式_第2张图片

通用

SQL Server Profiler

SSMS - 工具 - SQL Server Profiler 上查看执行的SQL语句。
在这里插入图片描述

引用

获取linq生成的sql语句
C# 查看EF生成的SQL语句
EF Core 查看linq to sql生成的sql
ABP增加记录EFCore 生成数据库脚本日志到新的txt文件

你可能感兴趣的:(#,WEB_C#,#,数据库,c#,sql,linq)