一.通过代码查看EFCore的SQL语句
方法一.标准日志
得下载安装包Install-Package Microsoft.Extensions.Logging.Console
public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder=>{
builder.AddConsole();});
optionsBuilder.UseLoggerFactory(loggerFactory);
方法二.简单日志
optionsBuilder.LogTo(msg =>
{
if(!msg.Contains("CommandExecuting")) return;
Console.WriteLine(msg);
});
方法三.TOQUERYSTRING
1.上面两种方法无法直接得到一个操作的SQL语句,而且在操作很多的情况下,容易混乱。
2.EFCore的Where方法返回的是IQueryable类型。DbSet也实现IQueryable接口。IQueryable有扩展方法ToQueryString()可以获得SQL
3.不需要真的执行查询才获取SQL语句;只能获取查询操作的
二.C#新语法
4.将global修饰符添加到using前,这个命名空间就应用到整个项目,不用再每个类中都重复加using了。
5.可以再这个项目中单独创建一个类来放置global using 类名
6.
7.在实现了Idisposable/IAsyncDisposable接口的类型的变量声明前加上using,当代码执行离开变量的作用域时,对象会被释放。
8.namespace声明时不用加大括号了
.
9.可空类型
用if-else语句判断一下是否为空
10.init函数
如果想要一个函数只能在构造函数初始化时赋值就能用init,(即使是同一个类中定义的方法去调用也会报错)
11.C#新增了record类型的语法,编译器会为我们自动生成Equals、GetHashcode等方法
语法是:public record Person(string FirstName,string LastName)