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.
|