国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

.NET 6教程,.Net Core 2022視頻教程,楊中科主講

2023-08-03 18:14 作者:孫酸兒  | 我要投稿

異步

異步方法 在方法未完成前 會運行別的線程任務,等待異步執(zhí)行后才會繼續(xù)進行

異步方法的缺點:

1、異步方法會生成一個類,運行效率沒有普通方法高

2、可能會占用非常多的線程

使用等待

Task.Delay()

Thread.Sleep()會阻塞當前線程

CancellationToken 提前終止任務

(瀏覽器關(guān)閉,對應的服務器端也應該進行關(guān)閉)

接口不用修飾Async 接口一般就定義返回值、參數(shù),沒有具體的方法體

yield

LINQ

List.Any(可以帶條件)

判斷是否至少有一條數(shù)據(jù) 與Count差不多,不過count是總數(shù)量,Any是只有有一條就返回 效率比較高

依賴注入DI

簡化模塊的組裝過程,降低模塊之間的耦合度

三種類型

Singleton(單列_一半不需要類狀態(tài)的話)

Scope(在自定范圍內(nèi)使用)

Transient(瞬時每次都會新創(chuàng)建一個對象,比較耗內(nèi)存)

在注冊時分為服務類型、實現(xiàn)類型,這兩個類型可以是同一個類

配置系統(tǒng)

三種配置方式

IOptions<T> 不會讀取到新的值 適用于一般配置場景

IOptionsMonitor<T>適用于需要熱更新配置并且全局統(tǒng)一的場景

IOptionsSnapshot<T>適用于需要熱更新配置并且服務內(nèi)統(tǒng)一的場景 推薦使用

EF Core

Migration Up Down 向上遷移、向下遷移

Add-Migration name 新增遷移操作

Update-Database 同步到數(shù)據(jù)庫

Update-Database xxx 回滾到xxx的狀態(tài)

Remove-migration 刪除最后一次的遷移腳本

Script-Migration A D 生成遷移SQL代碼 A-D

Script-Migration D 生成遷移SQL代碼 D-最新

反向工程

根據(jù)數(shù)據(jù)庫表來反向生成實體類

DBFirst(數(shù)據(jù)庫優(yōu)先)

ModelFirst (目前已經(jīng)不使用了)

CodeFirst(代碼優(yōu)先)


Scaffold-DbContext?

'Server=.;Database=demo1;Trusted_Connection=True;MultipleActiveResultSets=true' Microsoft.EntityFrameworkCore.SqlServer

需注意EF查詢的LINQ語句無法編譯其中加的自定義方案

EF Core一對多關(guān)系配置

HasOne WithMany

Include(關(guān)聯(lián)對象) 查詢關(guān)聯(lián)表信息(導航屬性)

單向?qū)Ш綄傩耘渲?/p>

HasOne().WithMany()

多對多關(guān)系配置

HasMany<T>().WithMany().UsingEntity(j=>j.Totable())

IQueryable與IEnumerable

IEnumerable 在內(nèi)存中操作(客戶端評估)

IQueryable 翻譯成SQL語句(服務器端評估)

IEnumerable 的查詢會取出說有數(shù)據(jù),再在內(nèi)存中進行匹配,效率較差

IQueryable的延遲執(zhí)行

非總結(jié)方法的時候不會執(zhí)行,GroupBy、Take

執(zhí)行終結(jié)方案會立即查詢 ToArray、Min()

如果返回值是IQueryable就是非終結(jié)方法

IQueryable默認是使用DatAdapter的方式分批次執(zhí)行 可以用ToArray()、ToList()一次性加載

EF執(zhí)行原生SQL語句

非查詢語句

dbCtx.Database.ExecuteSqlInterpolated()

實體查詢語句

ctx.Entity.FromSqlInterpolated()

任意查詢語句(使用原生ADO.NET)

conn = ctx.Database.GetDbConnection();

var cmd = conn.CreateCommand();

cmd.CommandText="";

cmd.ExecuteReaderAsync();

...

如何知道實體數(shù)據(jù)變了

快照更改跟蹤:只要一個實體對象和DBConetent發(fā)生任何關(guān)系(Select、Add...)都默認會被DbContexnt跟蹤

執(zhí)行SaveChanges時會進行比較

AsNoTracking() 不進行跟蹤(只查詢,不做修改、刪除可以使用,不占用內(nèi)存)

EF Core全局查詢篩選器

builder.HasQueryFil eter(a=>a.id>0)

忽略全局查詢篩選器

ctx.entitys.IgnoreQueryFilters().Where()

EF Core并發(fā)控制

悲觀鎖

通過Sql語句來使用并發(fā)控制

獨占、排他,并發(fā)大的話會嚴重影響性能,使用不當會導致死鎖

樂觀鎖

Update T set TT=新值 where ID =1 and TT=舊值

并發(fā)令牌

builder.Property(h=>h.xxx).IsConcurrencyToken();

catch(DbUpdateConcurrencyException ex)

{xxxx}

RowVersion

設(shè)置一個byte[]類型的屬性做并發(fā)令牌屬性

每次插入或更新數(shù)據(jù)庫會自動為這一行的RowVersion自動更新值

class House{

public byte[] RowVer{get;set}

}

builder.Property(h=>h.RowVer).IsRowVersion();

表達式樹 Expression Tree

Expression<TDelegate>

Expression<Func<Book,Bool>> e1 = b=>b.Price>5;

.Net 6新語法、特性

頂級語句

全局Using引用資源

Using資源管理

文件范圍的命名空間聲明

可空引用類型

record比較引用




.NET 6教程,.Net Core 2022視頻教程,楊中科主講的評論 (共 條)

分享到微博請遵守國家法律
玛纳斯县| 申扎县| 泾源县| 丹阳市| 菏泽市| 金溪县| 溧水县| 吐鲁番市| 开阳县| 岳阳市| 武夷山市| 新乐市| 府谷县| 保康县| 丹东市| 长武县| 临洮县| 渑池县| 文安县| 绥中县| 彭阳县| 固阳县| 冕宁县| 无锡市| 云南省| 虎林市| 屏山县| 阳城县| 沅陵县| 平凉市| 安徽省| 三穗县| 霍林郭勒市| 凉城县| 句容市| 临澧县| 宝兴县| 岳普湖县| 靖远县| 扎兰屯市| 邵阳县|