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

Vaade: 30236|Vastuse: 1

[Allikas] EF seab primaarvõtme Id guid isekasvava tüübi

[Kopeeri link]
Postitatud 04.11.2016 13:27:38 | | | |


Üksuse kood on järgmine:



Sisestuskood on järgmine:



Me määrame ainult nime väärtuse ega määra väärtust id-le, vaatame, mis on genereeritud SQL-lause??? , järgmiselt:

exec sp_executesql N'DECARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Nimi])
VÄLJUND sisestatud. [Id] SISSE @generated_keys
VÄÄRTUSED (@0)
SELECT t.[Id]
ALATES @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
KUS @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arhitektwww.itsvse.com'


Leidsime, et INSERT TestTab tabel lisab ainult Name välja, kas Id-l on vaikimisi väärtus??? Me leidsime, et

ef on aidanud mul määrata Id primaarvõtme vaikimisi väärtuse tüübi, vaikimisi väärtuse või sidumise "(newsequentialid())", ning kasutanud newsequentialid() funktsiooni, mis tutvustatakse järgmiselt:


1.: Newsequentialid funktsiooni suurim eelis newid funktsiooni ees on see, et kui luua indeks UNIQUEIDENTIFIER väljale, siis newid abil genereeritud uus väärtus ei ole fikseeritud, mistõttu uus väärtus põhjustab juhusliku muutumise indeksi B+ puus. Kui newsequentialidi poolt toodetud uus väärtus on regulaarne, siis indeksi B+ puu muutus on regulaarne. Regulaarsus ja ebaregulaarsus viivad jõudluse paranemiseni.

2: UNIQUEIDENTIFIER on väga mugav asi esmase võtmena, millel on asendamatud eelised näiteks andmete ühendamise operatsioonides
Kuid tavapäraste GUID-de detsentraliseerimise tõttu on primaarvõti lisamine klastriindeksisse palju vähem efektiivne

SQL SERVER 2005 lisab uue funktsiooni nimega NEWSEQUENTIALID, mida MSDN selgitab:
Loo määratud masinal GUID, mis on suurem kui ükski varem funktsiooni poolt genereeritud GUID.
NEWSEQUENTIALID() ei saa päringus viidata.
Märkus: See tähendab, et seda saab kasutada ainult andmebaasi veeru VAIKIMISI VÄÄRTUSENA ega saa täita lauseid nagu SELECT NEWSEQUENTIALID().
NEWSEQUENTIALID() poolt genereeritud GUID on selles konkreetses arvutis ainulaadne ainult siis, kui arvutil puudub võrgukaart.
Märkus: See lause on vale, peaks olema nii, et ainult siis, kui arvutil on võrgukaart, on genereeritud GUID maailmas ainulaadne
NEWSEQUENTIALID() abil saab genereerida GUID, et vähendada lehe vaidlust leheindeksis.





Eelmine:EasyUI Control Tab lisab lülitusfunktsiooni
Järgmine:c#/.Net kogu massiivi kiht väärtuse kaupa
Postitatud 01.02.2018 10:43:26 |
Jah, aitäh! Üürileandja oskused on väga rasked! Kõvasti
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