Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 27156|Svare: 2

[Kilde] EF DbContext garanterer at konteksten er unik

[Kopier lenke]
Publisert på 22.08.2020 10:21:31 | | |
Ved å bruke EF for å manipulere databasen, trekke ut DbContext (databaseoperasjonskontekstklassen) i samme HTTP-forespørsel for å sikre unikhet, bruker artikkelen to metoder for å sikre Unikheten til Entity Framework-konteksten, og løsningen på .NET Core-plattformen er vedlagt.

Alternativ 1

Hvis et objekt er garantert å være globalt unikt, vil du definitivt tenke på et klassisk designmønster: singleton-modus, hvis objektet som skal brukes må være unikt i tråden?

Dataslot: CallContext, ok, se msdns forklaring av callcontent.

CallContext er et dedikert samlingsobjekt som ligner på en trådlokal lagring for metodekall, og gir en dataslot som er unik for hver logisk utførelsestråd. Dataplasser deles ikke mellom kallekontekster på andre logiske tråder. Objekter kan legges til i CallContext når den forplanter seg frem og tilbake langs kjørekoden og inspiseres av individuelle objekter i den stien.

Det vil si at den nåværende tråden lagrer objektet i trådens lokale lagring, og objektet ødelegges samtidig som tråden ødelegges.

Bruk kode:



Bruksscenarier: Personlig tror jeg det brukes når objektet må brukes globalt innenfor tråden, og de andre trådutvidelsestrådene i tråden ikke kan få tilgang til det. For eksempel, i EFs datakontekst, vil en tråd bli generert for hver forespørsel, og på dette tidspunktet vil et datakontekstobjekt bli opprettet for ulike funksjoner å bruke, og til slutt committe sammen for å unngå transaksjonsproblemer. Selvfølgelig kan noen spørre meg om jeg kan lage en variabel å bruke, som også kan oppnå samme formål, selvfølgelig, men dette objektet kan også samhandle med andre tråddata, noe som strider mot konseptet om å være unik i tråden.

Alternativ 2

Scenariet er basert på web-http-forespørsler, fordi hver forespørsel er en ny tråd, og koden er som følger:



Bruk av "CallContext" i .NET Core

Vi vet at CallContext ikke lenger er tilgjengelig for . NETStandard eller .NET Core.

Men du kan bruke Asynclocal<T> for å etterligne en CallContext, bare lag følgende statiske klasse:



Navnerom som må refereres:



Det er også enkelt å bruke (her har jeg lagt inn CallContext i Common-biblioteket):





Foregående:ASP.NET MVC5 utgis i forhåndskompilert modus, noe som forbedrer sideinnlastingshastighet og ytelse
Neste:[Snu]. NETTO eksporterer PPT som et bilde
Publisert på 25.08.2020 23:38:22 |
Er det ikke duftende av infusjon?
 Vert| Publisert på 26.08.2020 21:37:39 |
Cucumber Publisert 2020-08-25 kl. 23:38
Er det ikke duftende av infusjon?

asp.net kjernens standard injeksjonslivssyklus dekker ikke mine behov

Tjenesteinstansene som opprettes av Singleton: IServiceProvider-objektet lagres på IServiceProvider-objektet som rotcontainer, så flere IServiceProvider-objekter med samme rot for samme type tjenesteinstanser er alle på samme objekt.
Tjenesteinstansene som opprettes av Scoped:IServiceProvider-objektet lagres av seg selv, så tjenesteinstansene av samme type som leveres av samme IServiceProvider-objekt, er alle det samme objektet.
Transient: For hver tjenesteleveringsforespørsel oppretter IServiceProvider-objektet alltid en ny tjenesteinstans.
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com