最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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視頻教程,楊中科主講的評論 (共 條)

分享到微博請遵守國家法律
定日县| 和龙市| 彰化县| 册亨县| 会东县| 铜梁县| 蓬安县| 平罗县| 吉安县| 卓资县| 社旗县| 长阳| 龙山县| 连云港市| 昌宁县| 建昌县| 小金县| 密山市| 甘孜县| 黄平县| 河间市| 武义县| 青神县| 扎兰屯市| 霍州市| 肥东县| 津南区| 洞头县| 海盐县| 新昌县| 大理市| 安康市| 阳曲县| 依安县| 屯留县| 行唐县| 敦煌市| 宜宾市| 山西省| 西乌珠穆沁旗| 肇源县|