Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 30236|Svar: 1

[Kilde] EF sætter primærnøglen Id til guid selvvoksende type

[Kopier link]
Opslået på 04/11/2016 13.27.38 | | | |


Entitetens enhedskode er som følger:



Indsættelseskoden er som følger:



Vi sætter kun værdien af navn og tildeler ikke en værdi til id, lad os se på, hvad den genererede SQL-sætning er??? , som følger:

exec sp_executesql N'DECLAR @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Navn])
OUTPUT indsat. [id] IND @generated_keys
VÆRDIER (@0)
VÆLG t.[ID]
FRA @generated_keys SOM G JOIN [dbo]. [TestTab] AS T ON g.[Id] = t.[Id]
HVOR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arkitektwww.itsvse.com'


Vi fandt ud af, at INSERT TestTab-tabellen kun indsætter Navn-feltet, har Id en standardværdi??? Vi fandt ud af, at

ef har hjulpet mig med at sætte standardværditypen for ID-primærnøglen, standardværdien eller bindingen "(newsequentialid())", og brugt newsequentialid()-funktionen, som introduceres således:


1.: Den største fordel ved newsequentialid-funktionen i forhold til newid-funktionen er, at hvis du opretter et indeks på et UNIQUEIDENTIFIER-felt, er den nye værdi, der genereres med newid, ikke fast, så den nye værdi får ændringen i indeks B+-træet til at være tilfældig. Hvis den nye værdi, der produceres af newsequentialiden, er regulær, så er ændringen af indeks B+-træet regulær. Regelmæssighed og uregelmæssighed fører til forbedringer i præstationen.

2: UNIQUEIDENTIFIER er en meget bekvem ting at gøre som primærnøgle, hvilket har uerstattelige fordele i operationer som datasammensmeltning
Men på grund af decentraliseringen af almindelige GUID'er, hvis primærnøglen tilføjes til et klyngeindeks, vil det være meget mindre effektivt, når poster indsættes

SQL SERVER 2005 tilføjer en ny funktion kaldet NEWSEQUENTIALID, som MSDN forklarer:
Opret en GUID på den angivne maskine, som er større end nogen GUID, der tidligere er genereret af funktionen.
NEWSEQUENTIALID() kan ikke refereres i forespørgslen.
Bemærk: Det betyder, at den kun kan bruges som DEFAULT VALUE for en databasekolonne og ikke kan udføre udsagn som SELECT NEWSEQUENTIALID().
GUID'en genereret af NEWSEQUENTIALID() er unik i den pågældende computer kun, hvis computeren ikke har et netværkskort.
Bemærk: Denne sætning er forkert, det burde kun være, at når computeren har et netværkskort, er den genererede GUID unik i verden
Du kan bruge NEWSEQUENTIALID() til at generere en GUID for at reducere sidekonkurrence på bladniveau-indekset.





Tidligere:EasyUI Control Tab tilføjer en toggle-funktion
Næste:c#/.Net collection array layer by layer værdi
Opslået på 01/02/2018 10.43.26 |
Ja, tak! Udlejerens færdigheder er meget svære! Svært
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com