Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 30236|Atbildi: 1

[Avots] EF iestata primārās atslēgas Id uz guid pašaugošo tipu

[Kopēt saiti]
Publicēts 04.11.2016 13:27:38 | | | |


Vienības kods ir šāds:



Ievietošanas kods ir šāds:



Mēs iestatām tikai nosaukuma vērtību un nepiešķiram vērtību id, apskatīsim, kas ir ģenerētais sql paziņojums??? , šādi:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
IEVIETOJIET [dbo]. [Testa cilne] ([Vārds])
OUTPUT ievietots. [Id] UZ @generated_keys
VĒRTĪBAS (@0)
SELECT t.[Id]
NO @generated_keys AS g JOIN [dbo]. [Testa cilne] AS t ON g.[Id] = t.[Id]
KUR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arhitektswww.itsvse.com'


Mēs atklājām, ka tabulā INSERT TestTab tiek ievietots tikai lauks Nosaukums, vai ID ir noklusējuma vērtība??? Mēs konstatējām, ka

ef ir palīdzējis man iestatīt Id primārās atslēgas noklusējuma vērtības tipu, noklusējuma vērtību vai saistījumu "(newsequentialid())", un izmantoja funkciju newsequentialid(), kas tiek ieviesta šādi:


1.:Funkcijas newsequentialid lielākā priekšrocība salīdzinājumā ar funkciju newid ir tāda, ka, izveidojot indeksu laukā UNIQUEIDENTIFIER, jaunā vērtība, kas ģenerēta, izmantojot newid, netiek fiksēta, tāpēc jaunā vērtība izraisa izmaiņas indeksa B+ kokā nejauši. Ja jaunā vērtība, ko rada newsequentialid, ir regulāra, tad indeksa B+ koka izmaiņas ir regulāras. Pareizība un neatbilstība uzlabo veiktspēju.

2: UNIQUEIDENTIFIER ir ļoti ērta lieta, ko darīt kā primāro atslēgu, kurai ir neaizvietojamas priekšrocības tādās operācijās kā datu apvienošana
Tomēr, ņemot vērā parasto GUID decentralizāciju, ja primārā atslēga tiek pievienota klastera indeksam, ierakstu ievietošana būs daudz mazāk efektīva

SQL SERVER 2005 pievieno jaunu funkciju ar nosaukumu NEWSEQUENTIALID, ko MSDN paskaidro:
Norādītajā datorā izveidojiet GUID, kas ir lielāks par jebkuru funkcijas iepriekš ģenerēto GUID.
Vaicājumā nevar norādīt atsauci uz NEWSEQUENTIALID().
Piezīme: Tas nozīmē, ka to var izmantot tikai kā datu bāzes kolonnas DEFAULT VALUE un nevar izpildīt tādus paziņojumus kā SELECT NEWSEQUENTIALID().
NEWSEQUENTIALID() ģenerētais GUID konkrētajā datorā ir unikāls tikai tad, ja datoram nav tīkla kartes.
Piezīmes: Šis teikums ir nepareizs, tam vajadzētu būt, ka tikai tad, ja datoram ir tīkla karte, ģenerētais GUID ir unikāls pasaulē
Varat izmantot funkciju NEWSEQUENTIALID(), lai ģenerētu GUID, lai samazinātu lappušu strīdus lapas līmeņa indeksā.





Iepriekšējo:EasyUI Control Tab pievieno pārslēgšanas funkciju
Nākamo:c#/.Net kolekcijas masīva vērtība pēc slāņa
Publicēts 01.02.2018 10:43:26 |
Jā, paldies! Saimnieka prasmes ir ļoti grūtas! Grūti
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com