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