Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 27156|Svar: 2

[Kilde] EF DbContext garanterer, at konteksten er unik

[Kopier link]
Opslået på 22/08/2020 10.21.31 | | |
Ved at bruge EF til at manipulere databasen, udtrække DbContext (databaseoperation-kontekstklassen) i samme HTTP-anmodning for at sikre unikhed, bruger artiklen to skemaer til at sikre Unikhed af Entity Framework-konteksten, og løsningen på .NET Core-platformen er vedhæftet.

Mulighed 1

Hvis et objekt er garanteret at være globalt unikt, vil du helt sikkert tænke på et klassisk designmønster: singleton-tilstand, hvis objektet, der skal bruges, skal være unikt i tråden?

Dataslot: CallContext, se msdn's forklaring af callcontent.

CallContext er et dedikeret samlingsobjekt, der ligner et trådlokalt lager til metodekald, og tilbyder en dataplads, der er unik for hver logisk eksekveringstråd. Dataslots deles ikke mellem kaldskontekster på andre logiske tråde. Objekter kan tilføjes til CallContext, når den bevæger sig frem og tilbage langs eksekveringskodens sti og inspiceres af individuelle objekter i den sti.

Det vil sige, at den aktuelle tråd gemmer objektet i trådens lokale lager, og objektet ødelægges, mens tråden ødelægges.

Brug kode:



Brugsscenarier: Jeg mener personligt, at det bruges, når objektet skal bruges globalt inden for tråden, og de andre tråde i trådens pakkeudvidelser ikke kan få adgang til det. For eksempel vil der i EF's datakontekst blive genereret en tråd for hver forespørgsel, og på dette tidspunkt vil et datakontekstobjekt blive oprettet, som forskellige funktioner kan bruge og til sidst commit sammen for at undgå transaktionsproblemer. Selvfølgelig vil nogle spørge mig, om jeg kan oprette en variabel at bruge, som selvfølgelig også kan opnå samme formål, men dette objekt kan også interagere med andre tråddata, hvilket går imod konceptet om at være unikt i tråden.

Mulighed 2

Scenariet er baseret på web-http-forespørgsler, fordi hver anmodning er en ny tråd, og koden er som følger:



Brug af "CallContext" i .NET Core

Vi ved, at CallContext ikke længere er tilgængelig for . NETStandard eller .NET Core.

Men du kan bruge Asynclocal<T> til at efterligne en CallContext, bare opret følgende statiske klasse:



Navnerum, der skal refereres:



Det er også nemt at bruge (her har jeg lagt CallContext i Common-biblioteket):





Tidligere:ASP.NET udgives MVC5 i forudkompileret tilstand, hvilket forbedrer sideindlæsningshastighed og ydeevne
Næste:[Drej]. NET eksporterer PPT som et billede
Opslået på 25/08/2020 23.38.22 |
Dufter det ikke af infusion?
 Udlejer| Opslået på 26/08/2020 21.37.39 |
Cucumber Udgivet den 25-8-2020 kl. 23:38
Dufter det ikke af infusion?

asp.net cores standard injektionslivscyklus opfylder ikke mine behov

De serviceinstanser, der oprettes af Singleton: IServiceProvider-objektet, gemmes på IServiceProvider-objektet som rodcontaineren, så flere IServiceProvider-objekter med samme rod for samme type serviceinstanser alle er på det samme objekt.
De serviceinstanser, der oprettes af Scoped:IServiceProvider-objektet, gemmes alene, så serviceinstanserne af samme type, som leveres af det samme IServiceProvider-objekt, er alle det samme objekt.
Transient: For hver serviceanmodning opretter IServiceProvider-objektet altid en ny serviceinstans.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com