Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 30236|Svar: 1

[Källa] EF sätter primärnyckeln Id till guiden självväxande typen

[Kopiera länk]
Publicerad på 2016-11-04 13:27:38 | | | |


Entitetens enhetskod är följande:



Infogningskoden är följande:



Vi sätter bara värdet på namn och tilldelar inget värde till id, låt oss titta på vad den genererade SQL-satsen är??? , enligt följande:

exec sp_executesql N'DECLAR @generated_keys tabell([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Namn])
OUTPUT insatt. [ID] IN @generated_keys
VÄRDEN (@0)
VÄLJ t.[Id]
FRÅN @generated_keys SOM G JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
DÄR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arkitektwww.itsvse.com'


Vi upptäckte att INSERT TestTab-tabellen bara infogar Name-fältet, har Id ett standardvärde??? Vi hittade att

ef har hjälpt mig att sätta standardvärdestypen för ID:ts primärnyckel, standardvärdet eller bindningen "(newsequentialid())", och använt funktionen newsequentialid(), som introduceras enligt följande:


1.: Den största fördelen med newsequentialid-funktionen jämfört med newid-funktionen är att om du skapar ett index på ett UNIQUEIDENTIFIER-fält, är det nya värdet som genereras med newid inte fast, så det nya värdet gör att förändringen i index B+-trädet blir slumpmässig. Om det nya värdet som produceras av den nya sequentialid är reguljärt, är förändringen i index B+-trädet reguljär. Regelbundenhet och oregelbundenhet leder till prestationsförbättringar.

2: UNIQUEIDENTIFIER är en mycket bekväm sak att göra som primärnyckel, vilket har oersättliga fördelar i operationer som datasammanslagning
Men på grund av decentraliseringen av vanliga GUID:er, om primärnyckeln läggs till i ett klustrat index, blir det mycket mindre effektivt när poster infogas

SQL SERVER 2005 lägger till en ny funktion kallad NEWSEQUENTIALID, som MSDN förklarar:
Skapa en GUID på den angivna maskinen som är större än någon GUID som tidigare genererats av funktionen.
NEWSEQUENTIALID() kan inte refereras i frågan.
Observera: Detta innebär att den endast kan användas som DEFAULT VALUE för en databaskolumn och inte kan exekveras satser som SELECT NEWSEQUENTIALID().
GUID:n som genereras av NEWSEQUENTIALID() är unik i just den datorn endast om datorn inte har ett nätverkskort.
Notera: Denna mening är fel, det borde vara så att endast när datorn har ett nätverkskort är den genererade GUID:en unik i världen
Du kan använda NEWSEQUENTIALID() för att generera en GUID för att minska sidkonkurrens i bladnivåindexet.





Föregående:EasyUI Control Tab lägger till en växlingsfunktion
Nästa:c#/.Net samlingsarrayvärde lager för lager
Publicerad på 2018-02-01 10:43:26 |
Ja, tack! Hyresvärdens färdigheter är väldigt svåra! Hårt
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com