See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 27156|Vastuse: 2

[Allikas] EF DbContext garanteerib, et kontekst on unikaalne

[Kopeeri link]
Postitatud 22.08.2020 10:21:31 | | |
EF-i kasutamine andmebaasi manipuleerimiseks, DbContext (andmebaasi operatsiooni kontekstiklass) väljavõtmine samas HTTP päringus unikaalsuse tagamiseks, artiklis kasutatakse kahte skeemi Entity Frameworki unikaalsuse tagamiseks ning lahendus .NET Core platvormil on lisatud.

Variant 1

Kui objekt on garanteeritult globaalselt unikaalne, siis mõtled kindlasti klassikalisele disainimustrile: singleton-režiim, kui objekt, mida kasutatakse, peab olema lõimes unikaalne?

Andmepesa: CallContext, okei, vaata msdn-i selgitust callcontenti kohta.

CallContext on pühendatud kogumisobjekt, mis sarnaneb lõime-lokaalse salvestusega metoodikutsete jaoks ning pakub andmepesa, mis on iga loogilise täitmise lõime jaoks unikaalne. Andmepesad ei ole teiste loogiliste lõimede kõnekontekstide vahel jagatud. Objekte saab lisada CallContexti, kui see liigub edasi-tagasi täitmiskoodi teel ja seda kontrollivad üksikud objektid selles teekonnas.

See tähendab, et praegune lõim salvestab objekti lõime lokaalsesse salvestusse ja objekt hävitatakse, kui lõim hävib.

Kasuta koodi:



Kasutusolukorrad: Isiklikult arvan, et seda kasutatakse siis, kui objekti tuleb kasutada globaalselt lõimes ja teised lõimepaketi laienduse lõimed ei pääse sellele ligi. Näiteks EF-i andmekontekstis genereeritakse iga päringu jaoks lõim ning sel hetkel luuakse andmekonteksti objekt, mida erinevad funktsioonid saavad kasutada ja lõpuks koos siduda, et vältida tehinguprobleeme. Muidugi võivad mõned inimesed küsida, kas ma võiksin luua muutuja, mida kasutada, mis võib samuti sama eesmärki täita, kuid see objekt võib suhelda ka teiste lõimeandmetega, mis on vastuolus unikaalsuse kontseptsiooniga lõimes.

Variant 2

Stsenaarium põhineb veebi http-päringutel, sest iga päring on uus lõim ja kood on järgmine:



"CallContext" kasutamine .NET Core'is

Me teame, et CallContext ei ole enam saadaval . NETStandard või .NET Core.

Aga sa võid kasutada<T> Asynclocali CallContexti jäljendamiseks, lihtsalt loo järgmine staatiline klass:



Nimeruumid, millele tuleb viidata:



Seda on ka lihtne kasutada (siin olen CallContexti pannud Commoni teeki):





Eelmine:ASP.NET MVC5 ilmub eelkompileeritud režiimis, parandades lehe laadimise kiirust ja jõudlust
Järgmine:[Pööre]. NET ekspordib PPT-d pildina
Postitatud 25.08.2020 23:38:22 |
Kas see pole infusioonilõhnaga?
 Üürileandja| Postitatud 26.08.2020 21:37:39 |
Kurk Postitatud 2020-8-25 23:38
Kas see pole infusioonilõhnaga?

asp.net tuuma vaikimisi süstimise elutsükkel ei vasta minu vajadustele

Singleton: IServiceProvider objekti loodud teenuseinstantsid salvestatakse IServiceProvider objektile juurkonteinerina, seega on mitu IServiceProvider objekti, millel on sama juur sama teenuse instantside jaoks, kõik samal objektil.
Scoped:IServiceProvider objekti loodud teenuseinstantsid salvestatakse iseseisvalt, seega sama tüüpi teenuseinstantsid, mida pakub sama IServiceProvider objekt, on kõik samad objektid.
Transient: Iga teenusepakkumise päringu puhul loob IServiceProvider objekt alati uue teenuseinstantsi.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com