Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 30236|Odpoveď: 1

[Zdroj] EF nastavuje primárny kľúč Id pre samorastúci typ guidu

[Kopírovať odkaz]
Zverejnené 4. 11. 2016 13:27:38 | | | |


Kód entity entity je nasledovný:



Kód vloženia je nasledovný:



Nastavujeme len hodnotu názvu a nepriraďujeme hodnotu id, pozrime sa, čo je generovaný SQL príkaz??? , nasledovne:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
VLOŽTE [dbo]. [TestTab] ([Meno])
VÝSTUP vložený. [Id] DO @generated_keys
HODNOTY (@0)
VYBERTE t.[Id]
Z @generated_keys AS G JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
KDE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architektwww.itsvse.com'


Zistili sme, že tabuľka INSERT TestTab vkladá iba pole Name, má Id predvolenú hodnotu??? Zistili sme, že

ef mi pomohol nastaviť predvolený typ hodnoty primárneho kľúča Id, predvolenú hodnotu alebo väzbu "(newsequentialid())", a použil som funkciu newsequentialid(), ktorá je predstavená nasledovne:


1.: Najväčšou výhodou funkcie newsequentialid oproti newid funkcii je, že ak vytvoríte index na poli UNIQUEIDENTIFIER, nová hodnota generovaná pomocou newid nie je pevne stanovená, takže nová hodnota spôsobí, že zmena v indexe B+ stromu je náhodná. Ak je nová hodnota vytvorená newsequentialidom regulárna, potom zmena indexového stromu B+ je regulárna. Pravidelnosť a nepravidelnosť vedú k zlepšeniu výkonu.

2: UNIQUEIDENTIFIER je veľmi praktický prvok ako primárny kľúč, ktorý má nenahraditeľné výhody pri operáciách, ako je zlučovanie dát
Avšak vzhľadom na decentralizáciu bežných GUID, ak sa primárny kľúč pridá do zhlukovaného indexu, bude to pri vkladaní záznamov oveľa menej efektívne

SQL SERVER 2005 pridáva novú funkciu nazvanú NEWSEQUENTIALID, ktorú MSDN vysvetľuje:
Vytvorte GUID na špecifikovanom stroji, ktorý je väčší ako akýkoľvek GUID predtým generovaný touto funkciou.
NEWSEQUENTIALID() nie je možné v dotaze odkazovať.
Poznámka: To znamená, že môže byť použitý iba ako PREDVOLENÁ HODNOTA databázového stĺpca a nemôže vykonávať príkazy ako SELECT NEWSEQUENTIALID().
GUID generované NEWSEQUENTIALID() je jedinečné v danom počítači len vtedy, ak počítač nemá sieťovú kartu.
Poznámka: Táto veta je nesprávna, mala by platiť, že len keď má počítač sieťovú kartu, vygenerované GUID je vo svete jedinečné
Môžete použiť NEWSEQUENTIALID() na vytvorenie GUID, ktorý zníži obťažovanie stránok na indexe na úrovni listov.





Predchádzajúci:EasyUI Control Tab pridáva prepínaciu funkciu
Budúci:c#/..Net kolekcia poľa po vrstve, hodnota po vrstve
Zverejnené 1. 2. 2018 10:43:26 |
Áno, ďakujem! Prenajímateľove schopnosti sú veľmi náročné! Tvrdo
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com