Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 30236|Vastaus: 1

[Lähde] EF asettaa ensisijaisen avaimen Id guid-itsekasvun tyypiksi

[Kopioi linkki]
Julkaistu 4.11.2016 13.27.38 | | | |


Yksikön koodi on seuraava:



Insert-koodi on seuraava:



Asetamme vain nimen arvon emmekä anna arvoa id:lle, katsotaanpa mikä generoitu SQL-lause on??? , seuraavasti:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Nimi])
OUTPUT lisätty. [Id] INTO @generated_keys
ARVOT (@0)
VALITSE t.[Id]
VUODESTA @generated_keys AS G JOIN [DBO]. [TestTab] AS t on g.[Id] = t.[Id]
MISSÄ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arkkitehtiwww.itsvse.com'


Huomasimme, että INSERT TestTab -taulu lisää vain Nimi-kentän, onko Id:llä oletusarvo??? Huomasimme, että

ef on auttanut minua asettamaan Id-pääavaimen oletusarvotyypin, oletusarvon tai sidonnan "(newsequentialid())", ja käyttänyt newsequentialid()-funktiota, joka esiteltiin seuraavasti:


1.: Newsequentialid-funktion suurin etu newid-funktioon verrattuna on se, että jos luot indeksin UNIQUEIDENTIFIER-kentälle, newid-kentällä generoitu uusi arvo ei ole kiinteä, joten uusi arvo aiheuttaa indeksin B+ puun muutoksen satunnaiseksi. Jos newsequentialidin tuottama uusi arvo on säännöllinen, indeksi B+ -puun muutos on säännöllinen. Säännöllisyys ja epäsäännöllisyys johtavat suorituskyvyn parannuksiin.

2: UNIQUEIDENTIFIER on erittäin kätevä pääavaimena, jolla on korvaamattomia etuja esimerkiksi tietojen yhdistämisessä
Kuitenkin tavallisten GUID-mallien hajauttamisen vuoksi, jos ensisijainen avain lisätään klusteroituun indeksiin, tietueiden lisääminen on paljon tehottomampi

SQL SERVER 2005 lisää uuden toiminnon nimeltä NEWSEQUENTIALID, jonka MSDN selittää:
Luo määritettyyn koneeseen GUID, joka on suurempi kuin mikään aiemmin funktion tuottama GUID.
NEWSEQUENTIALID() ei voi viitata kyselyssä.
Huomautus: Tämä tarkoittaa, että sitä voidaan käyttää vain tietokantasarakkeen OLETUSARVONA, eikä se voi suorittaa lauseita kuten SELECT NEWSEQUENTIALID().
NEWSEQUENTIALID():n tuottama GUID on yksilöllinen kyseisessä tietokoneessa vain, jos tietokoneella ei ole verkkokorttia.
Huomautus: Tämä lause on väärä, sen pitäisi olla niin, että vain kun tietokoneella on verkkokortti, luotu GUID on ainutlaatuinen maailmassa
Voit käyttää NEWSEQUENTIALID():ta luodaksesi GUID:n, joka vähentää sivujen kiistaa lehtitason indeksissä.





Edellinen:EasyUI Control Tab lisää vaihtotoiminnon
Seuraava:c#/.Net kokoelmataulukko kerros kerrokselta arvo
Julkaistu 1.2.2018 10.43.26 |
Kyllä, kiitos! Vuokranantajan taidot ovat todella vaikeat! Kovaa
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com