Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 30236|Risposta: 1

[Fonte] EF imposta la chiave primaria Id al tipo di auto-crescita dei guid

[Copiato link]
Pubblicato su 04/11/2016 13:27:38 | | | |


Il codice dell'entità è il seguente:



Il codice di inserimento è il seguente:



Noi impostiamo solo il valore di name e non assegniamo un valore a id, vediamo qual è l'istruzione SQL generata??? , come segue:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERIRE [dbo]. [TestTab] ([Nome])
OUTPUT inserito. [Id] VERSO @generated_keys
VALORI (@0)
SELECT t.[Id]
DA @generated_keys COME g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
DOVE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architettowww.itsvse.com'


Abbiamo scoperto che la tabella INSERT TestTab inserisce solo il campo Name, Id ha un valore predefinito??? Abbiamo scoperto che

ef mi ha aiutato a impostare il tipo di valore predefinito della chiave primaria Id, il valore predefinito o il binding "(newsequentialid())", e ha utilizzato la funzione newsequentialid(), introdotta come segue:


1.:Il vantaggio più grande della funzione newsequentialid rispetto a quella newid è che se si crea un indice su un campo UNIQUEIDENTIFIER, il nuovo valore generato usando newid non è fisso, quindi il nuovo valore rende casuale la variazione dell'albero dell'indice B+. Se il nuovo valore prodotto dal newsequentialid è regolare, allora il cambiamento dell'albero dell'indice B+ è regolare. Regolarità e irregolarità portano a miglioramenti delle prestazioni.

2: UNIQUEIDENTIFIER è una cosa molto comoda da fare come chiave primaria, che ha vantaggi insostituibili in operazioni come la fusione dei dati
Tuttavia, a causa della decentralizzazione dei GUID ordinari, se la chiave primaria viene aggiunta a un indice clusterizzato, sarà molto meno efficiente nell'inserire i record

SQL SERVER 2005 aggiunge una nuova funzione chiamata NEWSEQUENTIALID, che MSDN spiega:
Crea un GUID sulla macchina specificata che sia più grande di qualsiasi GUID precedentemente generato dalla funzione.
NEWSEQUENTIALID() non può essere citato nella query.
Nota: Questo significa che può essere usato solo come VALORE PREDEFINITO di una colonna di database e non può eseguire istruzioni come SELECT NEWSEQUENTIALID().
Il GUID generato da NEWSEQUENTIALID() è unico in quel particolare computer solo se il computer non dispone di una scheda di rete.
Nota: Questa frase è sbagliata, dovrebbe essere che solo quando il computer ha una scheda di rete, il GUID generato è unico al mondo
Puoi usare NEWSEQUENTIALID() per generare un GUID e ridurre la contesa delle pagine sull'indice a livello di foglia.





Precedente:La scheda di controllo di EasyUI aggiunge una funzione di interruzione
Prossimo:c#/.Net collezione livello per livello
Pubblicato su 01/02/2018 10:43:26 |
Sì, grazie! Le competenze del proprietario sono molto difficili! Duro
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com