Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 30236|Odgovoriti: 1

[Vir] EF nastavi primarni ključ Id za samorastoči tip vodila

[Kopiraj povezavo]
Objavljeno na 4. 11. 2016 13:27:38 | | | |


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.





Prejšnji:Zavihek EasyUI Control doda funkcijo preklopa
Naslednji:c#/..Net zbirka po plasteh
Objavljeno na 1. 02. 2018 10:43:26 |
Da, hvala! Najemodajalčeve sposobnosti so zelo zahtevne! Močno
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com