Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 27156|Odgovoriti: 2

[Vir] EF DbContext zagotavlja, da je kontekst edinstven

[Kopiraj povezavo]
Objavljeno na 22. 08. 2020 10:21:31 | | |
Z uporabo EF za manipulacijo baze podatkov, izvleček DbContexta (razred konteksta za operacijo baze podatkov) v isti HTTP zahtevi za zagotovitev edinstvenosti, članek uporablja dve shemi za zagotavljanje edinstvenosti konteksta Entity Framework, rešitev na .NET Core platformi pa je priložena.

Možnost 1

Če je objekt zagotovljeno globalno edinstven, boste zagotovo pomislili na klasičen oblikovalski vzorec: singleton način, če mora biti uporabljeni objekt edinstven v niti?

Podatkovna reža: CallContext, v redu, glej razlago callcontenta na msdn.

CallContext je namenski zbiralni objekt, podoben lokalnemu shrambi za klice metod, in zagotavlja podatkovno režo, ki je edinstvena za vsako logično izvršilno nit. Podatkovne reže niso deljene med konteksti klicev v drugih logičnih nitih. Objekte je mogoče dodati v CallContext, ko se ta širi naprej in nazaj po poti izvršilne kode in ga pregledujejo posamezni objekti na tej poti.

To pomeni, da trenutna nit shrani objekt v lokalno shrambo niti, objekt pa se uniči, ko se nit uniči.

Uporabite kodo:



Scenariji uporabe: Osebno mislim, da se uporablja, ko je predmet treba uporabljati globalno znotraj niti, druge niti paketov pa ne morejo dostopati do njega. Na primer, v EF-jevem podatkovnem kontekstu se za vsako zahtevo ustvari nit, v tem času pa se ustvari objekt podatkovnega konteksta, ki ga različne funkcije uporabljajo in se na koncu združijo, da se izognejo težavam s transakcijami. Seveda me bodo nekateri vprašali, ali lahko ustvarim spremenljivko za uporabo, kar lahko doseže isti namen, seveda, vendar lahko ta objekt tudi interagira z drugimi podatki niti, kar je v nasprotju s konceptom edinstvenosti v niti.

Možnost 2

Scenarij temelji na spletnih HTTP zahtevah, saj je vsaka zahteva nova nit, koda pa je naslednja:



Uporaba "CallContext" v .NET Core

Vemo, da CallContext ni več na voljo za . NETStandard ali .NET Core.

Lahko pa uporabite Asynclocal,<T> da posnemate CallContext, samo ustvarite naslednji statični razred:



Imenski prostori, ki jih je treba referencirati:



Prav tako je enostaven za uporabo (tukaj sem dal CallContext v Common knjižnico):





Prejšnji:ASP.NET MVC5 je izdan v predkompiliranem načinu, kar izboljša hitrost nalaganja strani in zmogljivost
Naslednji:[Obrat]. NET izvozi PPT kot sliko
Objavljeno na 25. 08. 2020 23:38:22 |
Ali ni dišeč ob infuziji?
 Najemodajalec| Objavljeno na 26. 08. 2020 21:37:39 |
Cucumber Objavljeno 25. 8. 2020 ob 23:38
Ali ni dišeč ob infuziji?

Privzeti življenjski cikel injekcij asp.net jedra ne ustreza mojim potrebam

Primeri storitev, ki jih ustvari objekt Singleton: IServiceProvider, so shranjeni na objektu IServiceProvider kot korenski kontejner, tako da je več IServiceProvider objektov z isto korensko točko za isto vrsto instanc storitev na istem objektu.
Primeri storitev, ki jih ustvari objekt Scoped:IServiceProvider, se shranijo sami po sebi, zato so instance storitev iste vrste, ki jih zagotavlja isti objekt IServiceProvider, vse isti objekt.
Transient: Za vsako zahtevo za zagotavljanje storitve objekt IServiceProvider vedno ustvari novo instanco storitve.
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com