Koda entitete je naslednja:
Vstavna koda je naslednja:
Nastavimo le vrednost imena in ne dodelimo vrednosti id-ju, poglejmo, kaj je generirani SQL stavek??? , kot sledi:
exec sp_executesql N'DECLARE @generated_keys tabela([Id] uniqueidentifier) VSTAVI [dbo]. [TestTab] ([Ime]) OUTPUT vstavljen. [ID] V @generated_keys VREDNOSTI (@0) IZBERI t.[Id] IZ @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id] KJER @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arhitektwww.itsvse.com'
Ugotovili smo, da tabela INSERT TestTab vstavlja le polje Ime, ali ima Id privzeto vrednost??? Ugotovili smo, da
ef mi je pomagal nastaviti privzeto vrednost primarnega ključa Id, privzeto vrednost ali vezavo "(newsequentialid())", in uporabil funkcijo newsequentialid(), ki je predstavljena na naslednji način:
1.: Največja prednost funkcije newsequentialid pred funkcijo newid je, da če ustvarite indeks na polju UNIQUEIDENTIFIER, nova vrednost, generirana z newid, ni fiksna, zato nova vrednost povzroči, da je sprememba v drevesu indeksa B+ naključna. Če je nova vrednost, ki jo proizvede newsequentialid, regularna, je sprememba indeksnega drevesa B+ regularna. Rednost in nerednost vodita do izboljšav uspešnosti.
2: UNIQUEIDENTIFIER je zelo priročna stvar kot primarni ključ, ki ima neprecenljive prednosti pri operacijah, kot je združevanje podatkov Vendar pa bo zaradi decentralizacije običajnih GUID-ov, če se primarni ključ doda v gručen indeks, vstavljanje zapisov bistveno manj učinkovito
SQL SERVER 2005 doda novo funkcijo z imenom NEWSEQUENTIALID, ki jo MSDN pojasnjuje: Ustvarite GUID na določenem stroju, ki je večji od katerega koli GUID-ja, ki ga je funkcija prej ustvarila. NEWSEQUENTIALID() ni mogoče referencirati v poizvedbi.
Opomba: To pomeni, da se lahko uporablja le kot PRIVZETA VREDNOST stolpca baze podatkov in ne more izvajati ukazov, kot je SELECT NEWSEQUENTIALID(). GUID, ki ga generira NEWSEQUENTIALID(), je edinstven v tem računalniku le, če računalnik nima omrežne kartice.
Opomba: Ta stavek je napačen, moralo bi biti, da je generirani GUID edinstven v svetu le, ko ima računalnik omrežno kartico. Uporabite lahko NEWSEQUENTIALID() za generiranje GUID-ja, da zmanjšate zasedenost strani na indeksu na ravni lista.
|