Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 30236|Odpověď: 1

[Zdroj] EF nastavuje primární klíčové Id pro samorozvíjející se typ guidu

[Kopírovat odkaz]
Zveřejněno 04.11.2016 13:27:38 | | | |


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.





Předchozí:EasyUI Control Tab přidává funkci přepínače
Další:C#/..Net kolekce pole po vrstvě hodnota
Zveřejněno 01.02.2018 10:43:26 |
Ano, děkuji! Pronajímatelovy schopnosti jsou velmi náročné! Tvrdě
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com