Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 30236|Antwoord: 1

[Bron] EF zet de primaire sleutel Id aan het guid zelfgroeiende type

[Link kopiëren]
Geplaatst op 04-11-2016 13:27:38 | | | |


De entiteitscode van de entiteit is als volgt:



De invoegcode is als volgt:



We stellen alleen de waarde van naam in en wijzen geen waarde toe aan id, laten we eens kijken wat de gegenereerde SQL-instructie is??? , als volgt:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Naam])
OUTPUT ingevoegd. [Id] IN @generated_keys
WAARDEN (@0)
SELECTEER t.[Id]
VAN @generated_keys ALS G JOIN [dbo]. [TestTab] AS T ON g.[Id] = t.[Id]
WAAR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


We ontdekten dat de INSERT TestTab-tabel alleen het Naam-veld invoegt, heeft Id een standaardwaarde??? We hebben gevonden dat

ef heeft mij geholpen het standaardwaardetype van de primaire ID sleutel in te stellen, de standaardwaarde of binding "(newsequentialid())", en gebruikte ik de newsequentialid()-functie, die als volgt wordt geïntroduceerd:


1.: Het grootste voordeel van de newsequentialid-functie ten opzichte van de newid-functie is dat als je een index maakt op een UNIQUEIDENTIFIER-veld, de nieuwe waarde die met newid wordt gegenereerd niet vaststaat, waardoor de nieuwe waarde ervoor zorgt dat de verandering in de index B+-boom willekeurig is. Als de nieuwe waarde die door de newsequentialid wordt geproduceerd regelmatig is, dan is de verandering van de index B+-boom regulier. Regelmaat en onregelmatigheid leiden tot prestatieverbeteringen.

2: UNIQUEIDENTIFIER is een zeer handige functie als primaire sleutel, wat onvervangbare voordelen heeft bij operaties zoals data-samenvoeging
Door de decentralisatie van gewone GUID's zal het echter veel minder efficiënt zijn bij het invoegen van records als de primaire sleutel aan een geclusterde index wordt toegevoegd

SQL SERVER 2005 voegt een nieuwe functie toe genaamd NEWSEQUENTIALID, die MSDN uitlegt:
Maak een GUID aan op de gespecificeerde machine die groter is dan welke GUID die eerder door de functie is gegenereerd.
NEWSEQUENTIALID() kan niet worden verwezen in de query.
Opmerking: Dit betekent dat het alleen als de DEFAULT VALUE van een databasekolom kan worden gebruikt en geen statements zoals SELECT NEWSEQUENTIALID() kan uitvoeren.
De GUID die door NEWSEQUENTIALID() wordt gegenereerd, is uniek in die specifieke computer alleen als de computer geen netwerkkaart heeft.
Opmerking: Deze zin is onjuist, het zou moeten zijn dat alleen wanneer de computer een netwerkkaart heeft, de gegenereerde GUID uniek is in de wereld
Je kunt NEWSEQUENTIALID() gebruiken om een GUID te genereren om paginacontentie op de bladniveau index te verminderen.





Vorig:EasyUI Control Tab voegt een schakelfunctie toe
Volgend:c#/.Net verzameling array layer by layer value
Geplaatst op 01-02-2018 10:43:26 |
Ja, dank je! De vaardigheden van de verhuurder zijn erg moeilijk! Hard
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com