Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 30236|Odpowiedź: 1

[Źródło] EF ustawia główny klucz Id dla typu samorosnącego guida

[Skopiuj link]
Opublikowano 04.11.2016 13:27:38 | | | |


Kod podmiotu jest następujący:



Kod wstawki jest następujący:



Ustawiamy tylko wartość nazwy i nie przypisujemy wartości id, zobaczmy, czym jest generowane polecenie sql??? , w następujący sposób:

exec sp_executesql N'DECLARE @generated_keys tabela([Id] uniqueidentifier)
WSTAW [dbo]. [TestTab] ([Imię])
OUTPUT wstawiony. [Id] DO @generated_keys
WARTOŚCI (@0)
WYBIERZ t.[Id]
OD @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
GDZIE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


Stwierdziliśmy, że tabela INSERT TestTab wstawia tylko pole Name, czy Id ma wartość domyślną??? Znaleźliśmy to

ef pomógł mi ustawić domyślny typ wartości klucza głównego ID, domyślną wartość lub powiązanie "(newsequentialid())", oraz użył funkcji newsequentialid(), która jest wprowadzona w następujący sposób:


1.:Największą zaletą funkcji newsequentialid w porównaniu z funkcją newid jest to, że jeśli utworzysz indeks na polu UNIQUEIDENTIFIER, nowa wartość wygenerowana za pomocą newid nie jest stała, więc nowa wartość powoduje losową zmianę w drzewie indeksu B+. Jeśli nowa wartość wygenerowana przez newsequentialid jest regularna, to zmiana drzewa indeksu B+ jest regularna. Regularność i nieregularność prowadzą do poprawy wydajności.

2: UNIQUEIDENTIFIER to bardzo wygodny element jako klucz główny, który ma niezastąpione zalety w operacjach takich jak łączenie danych
Jednak ze względu na decentralizację zwykłych GUID, jeśli klucz główny zostanie dodany do indeksu klastrowego, wstawianie rekordów będzie znacznie mniej efektywne

SQL SERVER 2005 dodaje nową funkcję o nazwie NEWSEQUENTIALID, którą MSDN wyjaśnia:
Stwórz GUID na podanej maszynie, który jest większy niż jakikolwiek wcześniej wygenerowany przez tę funkcję.
NEWSEQUENTIALID() nie może być odwołany w zapytaniu.
Uwaga: oznacza to, że może być używany tylko jako WARTOŚĆ DOMYŚLNA kolumny bazy danych i nie może wykonywać instrukcji takich jak SELECT NEWSEQUENTIALID().
GUID generowany przez NEWSEQUENTIALID() jest unikalny w danym komputerze tylko wtedy, gdy komputer nie posiada karty sieciowej.
Uwaga: To zdanie jest błędne, powinno być tak, że tylko gdy komputer ma kartę sieciową, wygenerowany GUID jest unikalny w świecie
Możesz użyć NEWSEQUENTIALID() do wygenerowania GUID i zmniejszenia konkurencji stron na indeksie na poziomie liści.





Poprzedni:Zakładka EasyUI Control dodaje funkcję przełączania
Następny:c#/.Net kolekcja tablica warstwa po warstwie
Opublikowano 01.02.2018 10:43:26 |
Tak, dziękuję! Umiejętności właściciela są bardzo trudne! Mocno
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com