Reikalavimai: Projektas naudoja EF ORM sistemą duomenų bazei pridėti, ištrinti, modifikuoti ir tikrinti, tačiau susidūrus su sudėtingomis užklausomis, gali būti neįmanoma naudoti Linq ir Lambda geresnėms užklausoms, todėl turime naudoti EF 6, kad galėtume vykdyti vietinius SQL sakinius užklausoms.
Neapdorota SQL užklausa (EF6):Hipersaito prisijungimas matomas.
Kadangi SQL sakiniuose turi būti sąlyga where, parametro reikšmė perduodama per URL parametrą.
Pirma, mūsų SQL sakinys naudoja eilučių sujungimą užklausai, kaip nurodyta toliau:
Kodas yra toks:
Duomenų bazės vykdomus SQL sakinius galite pamatyti taip:
SELECT Name FROM [Klasifikacija] WHERE Name = 'Mobiliųjų įrenginių kūrimas'; pasirinkite 1; --' SlinktiSQL sakinių sujungimo būdas yra injekcijos pavojus。
Mes modifikavome kodą, kad išvengtume SQL injekcijos atakų, parametrizuodami užklausas, ir kodas yra toks:
exec sp_executesql N'SELECT Name FROM [Klasifikacija] WHERE Name = @n',N'@n nvarchar(17)', @n=N'Mobile Dev''; pasirinkite 1; --'
Užuot tiesiogiai naudojęs sujungimą, EF Core konvertuoja jį į parametrizuotus SQL sakinius. Nuorodos yra šios:
(Pabaiga)
|