Kód entity entity je následující:
Kód vložení je následující:
Nastavujeme pouze hodnotu názvu a nepřiřazujeme hodnotu id, podívejme se, co je generovaný SQL příkaz??? , a to následovně:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) VLOŽTE [dbo]. [TestTab] ([Jméno]) VÝSTUP vložen. [ID] DO @generated_keys HODNOTY (@0) VYBRAT t.[Id] OD @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'
Zjistili jsme, že tabulka INSERT TestTab vkládá pouze pole Name, má Id výchozí hodnotu??? Zjistili jsme, že
ef mi pomohl nastavit výchozí typ hodnoty primárního klíče Id, výchozí hodnotu nebo vazbu "(newsequentialid())", a použil funkci newsequentialid(), která je představena následovně:
1.: Největší výhodou funkce newsequentialid oproti funkci newid je, že pokud vytvoříte index na poli UNIQUEIDENTIFIER, nová hodnota generovaná pomocí newid není pevně daná, takže nová hodnota způsobí, že změna ve stromu indexu B+ je náhodná. Pokud je nová hodnota generovaná newsequentialidem regulární, pak je změna indexového stromu B+ regulární. Pravidelnost a nepravidelnost vedou ke zlepšení výkonu.
2: UNIQUEIDENTIFIER je velmi praktická věc jako primární klíč, který má nenahraditelné výhody při operacích, jako je slučování dat Nicméně kvůli decentralizaci běžných GUIDů, pokud je primární klíč přidán do shlukovaného indexu, bude vkládání záznamů mnohem méně efektivní
SQL SERVER 2005 přidává novou funkci nazvanou NEWSEQUENTIALID, kterou MSDN vysvětluje: Vytvořte na specifikovaném stroji GUID, které je větší než jakýkoli GUID dříve generovaný funkcí. NEWSEQUENTIALID() nelze v dotazu odkazovat.
Poznámka: To znamená, že lze použít pouze jako VÝCHOZÍ HODNOTU sloupce databáze a nemůže vykonávat příkazy jako SELECT NEWSEQUENTIALID(). GUID generované NEWSEQUENTIALID() je v daném počítači unikátní pouze tehdy, pokud počítač nemá síťovou kartu.
Poznámka: Tato věta je nesprávná, mělo by platit, že pouze když má počítač síťovou kartu, generovaný GUID je ve světě unikátní Můžete použít NEWSEQUENTIALID() k vytvoření GUID, který snižuje obtěžování stránek na indexu na úrovni listu.
|