Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 36284|Atsakyti: 0

[Šaltinis] EF Core serijos (3) objekto rėmelio šešėlio atributai [Pakartotinis spausdinimas]

[Kopijuoti nuorodą]
Publikuota: 2021-2-7 14:15:08 | | | |
"EF Core Series 2" apima "OnModelCreation", kuria indeksus naudodama atspindžius ir kt.
https://www.itsvse.com/thread-9392-1-1.html

Šešėlinės ypatybės yra ypatybės, kurios nėra apibrėžtos .NET objekto klasėje, bet yra apibrėžtos tam objekto tipui EF Core modelyje. Šių atributų reikšmės ir būsenos išlaikomos tik pakeitimų sekimo priemonėje. Šešėlinės ypatybės yra naudingos, kai duomenų bazės duomenys neturėtų būti rodomi susietame objekto tipe.
Subjektų sistemos branduolys pristato naują atributo tipą, vadinamą "šešėliniu" atributu, kurio EF 6.x nėra.

Šešėlio atributo nėra. .NET objektų klasės. Vietoj to galite sukonfigūruoti jį konkrečiam objekto tipui objekto duomenų modelyje. Jį galima sukonfigūruoti naudojant konteksto klasės metodą OnModelCreating().

Toliau pateiktoje diagramoje pavaizduotas šešėlio atributas.



Kaip parodyta aukščiau esančiame paveikslėlyje, šešėlio atributas nepriklauso jūsų objekto klasei. Todėl negalite jo pasiekti pasiekę kitų objekto ypatybių. Šešėlines ypatybes galima konfigūruoti tik objektų tipams kuriant objekto duomenų modelį, jos taip pat bus susietos su duomenų bazės stulpeliais. Šešėlinės ypatybės reikšmė ir būsena išlaikoma tik keitimų sekimo priemonėje.

Supraskime praktinius šešėlių savybių aspektus. Tarkime, kad turime išlaikyti kiekvieno duomenų bazės lentelės įrašo sukūrimo ir atnaujinimo datas. Sužinojote, kaip nustatyti "EF Core" objektų kūrimo ir modifikavimo datas, apibrėžiant objektų klasės ypatybes CreatedDate ir UpdatedDate. Čia pamatysime, kaip pasiekti tą patį rezultatą naudojant šešėlines savybes, o ne įtraukiant šešėlines savybes į objektų klasę.

Apsvarstykite šias mokinių esybės klases.

Aukščiau esanti studentų klasėAtributai CreatedDate ir UpdatedDate neįtraukti, kad išlaikytumėte laiką, kada jis buvo sukurtas arba atnaujintas. Mes sukonfigūruojame juos kaip šešėlines ypatybes objekte Studentas.

Apibrėžkite šešėlio ypatybes

Galite naudoti OnModelCreating() metodą, kad apibrėžtumėte šešėlines objektų tipų ypatybes naudodami Fluent API.

Toliau pateikta konfigūracija sukonfigūruoja dvi užtemdytas objekto Studentas ypatybes CreatedDate ir UpdatedDate.


Kaip matote, šešėlių savybėms konfigūruoti naudojamas metodas Property(). Nurodykite šešėlinės ypatybės pavadinimą kaip eilutę, o tipą kaip bendrąjį parametrą. Jei metode Property() nurodytas pavadinimas sutampa su esamos ypatybės pavadinimu, EF Core sukonfigūruos esamą ypatybę kaip šešėlinę ypatybę, o ne pristatys naują šešėlinę ypatybę.

Šešėlinės ypatybės duomenų bazėje

Apibrėžę šešėlines savybes, turime atnaujinti duomenų bazės schemą, nes šešėlinės savybės bus susietos su atitinkamais duomenų bazės stulpeliais.

Norėdami tai padaryti, įtraukite duomenų bazės perkėlimą į "Visual Studio" paketų tvarkyklės konsolę naudodami šią komandą.


Dabar lentelėje Studentas bus du stulpeliai, CreatedDate ir UpdatedDate SQL serveryje, kaip parodyta toliau.



Taigi, net jei šių ypatybių neįtrauksime į studento klasę ir nesukonfigūruosime jų kaip šešėlinių savybių, duomenų bazėje bus atitinkami stulpeliai.

Prieiga prie šešėlinės ypatybės

Galite naudoti metodą Property(), kad gautumėte arba nustatytumėte šešėlinės ypatybės reikšmę EntityEntry. Šis kodas pasiekia šešėlinės ypatybės reikšmę.

Tačiau pagal savo scenarijų norime automatiškai nustatyti šių šešėlinių ypatybių reikšmes SaveChanges() metode, kad nereikėtų jų rankiniu būdu nustatyti kiekviename objekto objekte. Taigi, nepaisykite SaveChanges() metodo konteksto klasėje, kaip parodyta toliau.

Tai automatiškai nustatys šešėlinių ypatybių CreatedDate ir UpdatedDate reikšmes.

Dabar vykdykite šį kodą ir patikrinkite įrašus duomenų bazėje.


Aukščiau pateiktas kodas įterps šiuos įrašus į CreatedDate ir UpdatedDate studentams.



Taigi, sukonfigūravę šešėlio ypatybes, mums nereikia jų įtraukti į objektų klasę.

Visų objektų šešėlinių ypatybių konfigūravimas

Užuot rankiniu būdu sukonfigūravę šešėlio ypatybes visuose objektuose vienu metu, galite jas konfigūruoti rankiniu būdu.

Pavyzdžiui, paskutinį kartą galime sukonfigūruoti visus CreatedDate ir UpdatedDate objektus, kaip parodyta šiame paveikslėlyje.


Kada naudoti šešėlinę savybę?

Šešėlio atributas gali būti naudojamas dviem atvejais:

Kai nenorite rodyti duomenų bazės stulpelių susietuose objektuose, pvz., anksčiau aptartame scenarijuje.
Kai nenorite atskleisti išorinio rakto atributų, o tik norite naudoti naršymo atributus ryšiams valdyti. Išorinio rakto ypatybė bus šešėlinė ypatybė ir bus susieta su duomenų bazės stulpeliu, bet nebus rodoma kaip objekto ypatybė. (EF Core, jei objekto klasėje neapibrėžiate išorinio rakto ypatybės, ji automatiškai sugeneruos šešėlinę ypatybę.) Jums nereikia rankiniu būdu konfigūruoti išorinio rakto ypatybių. )


Išteklių:

Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.




Ankstesnis:MySQL eksportuoja užklausos rezultatus į failą
Kitą:ASP.NET "Core ViewComponent" mokymo programa, kaip naudoti "ViewComponent"
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com