上一页 1 2 3 4 5 6 7 8 9 10 ··· 46 下一页
摘要: 1、全局查询筛选器:EF Core会自动将这个查询筛选器应用于涉及这个实体类型的所有LINQ查询2、场景:软删除、多租户 阅读全文
posted @ 2022-04-20 13:51 算盘 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 快照更改跟踪1、如果通过DbContext查询出来的对象只是用来展示不会发生状态改变,则可以使用AsNoTracking()来"禁用跟踪" 2、分别加AsNoTracking()和不加,分别查看一个对象修改后的EntityEntry信息 3、如果查询出来的对象不会被修改、删除等,那么查询是可以AsN 阅读全文
posted @ 2022-04-20 13:49 算盘 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 快照更改跟踪:首次跟踪一个实体的时候,EFCore会创建这个实体的快照。执行SaveChanges()等方法时,EFCore将会把存储的快照中的值与实体的当前值进行比较。 实体的状态已添加(Added):DbContext正在跟踪此实体,但数据库中尚不存在该实体 未改变(Unchanged):DbC 阅读全文
posted @ 2022-04-11 13:40 算盘 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 1、申请方式的不同。栈由系统自动分配,而堆是人为申请开辟; 2、申请大小的不同。栈获得的空间较小,而堆获得的空间较大; 3、申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢; 4、存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其 阅读全文
posted @ 2022-04-01 22:40 算盘 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 方式一:ToListAsync()、ToArrayAsync()。结果集不要太大方式二:await foreach(Book b in ctx.Books.AsAsyncEnumerable())不过,一般没必要这么做 阅读全文
posted @ 2022-03-26 14:41 算盘 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 对比1、DataReader:分批从数据库服务器读取数据。内存占用小、DB连接占用时间长2、DataTable:把所有数据都一次性从数据库服务器都加载到客户端内存中。内存占用大,节省DB连接 验证IQueryable用什么方式1、用insert into select 多插入一些数据,然后加上Del 阅读全文
posted @ 2022-03-23 17:49 算盘 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1、IQueryable只是代表一个"可以放到数据库服务器去执行的查询",它没有立即执行,只是"可以被执行"而已 2、对于IQueryable接口调用非终结方法的时候不会执行查询,而调用终结方法的时候则会立即执行查询 3、终结方法:遍历、ToArray()、ToList()、Min()、Max()、 阅读全文
posted @ 2022-03-17 11:01 算盘 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 不同的WHERE方法1、对普通集合和DbSet调用的Where方法,虽然用起来一样,但是"转到定义"后看到的是不同的方法2、普通集合的版本(IEnumerable)是在内存中过滤(客户端评估),而IQueryable版本则是把查询操作翻译成SQL语句(服务器端评估) 阅读全文
posted @ 2022-03-16 14:04 算盘 阅读(51) 评论(0) 推荐(0) 编辑
摘要: async的方法会被C#编译器编译成一个类,会主要根据await调用进行切分为多个状态,对async方法的调用会被拆分为对MoveNext的调用。用await看似是"等待",经过编译后,其实没有"wait" 阅读全文
posted @ 2022-03-14 15:15 算盘 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 1)异步方法的返回值一般是Task<T>,T是真正的返回值类型Task<int>。惯例:异步方法名字以Async结尾2)即使方法没有返回值,也最好把返回值声明为非泛型的Task3)调用异步方法时,一般在方法前加上await,这样拿到的返回值就是泛型指定的T类型4)异步方法的"传染性":一个方法中如果 阅读全文
posted @ 2022-03-11 22:28 算盘 阅读(89) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 46 下一页