Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 30236|Válasz: 1

[Forrás] Az EF a primer kulcsot az önnövő guid típusnak állítja be

[Linket másol]
Közzétéve 2016. 11. 04. 13:27:38 | | | |


Az entitás egységkódja a következő:



A beillesztési kód a következő:



Csak a név értékét állítjuk be, és nem rendelünk értéket az id-hez, nézzük meg, mi a generált SQL utasítás??? , a következőként:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Név])
KIMENET beillesztve. [Id] BE @generated_keys
ÉRTÉKEK (@0)
SELECT t.[Id]
A @generated_keys AS G JOIN [DBO]. [TestTab] AS t on g.[Id] = t.[Id]
HOL @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


Azt találtuk, hogy az INSERT TestTab tábla csak a Name mezőt illeszti be, van az Id-nek alapértelmezett értéke??? Azt találtuk, hogy

az ef segített beállítani az Id elsődleges kulcs alapértelmezett értéktípusát, az alapértelmezett értéket vagy kötést "(newsequentialid())", és használtam a newsequentialid() függvényt, amely az alábbiakban jelenik meg:


1.: A newsequentialid függvény legnagyobb előnye a newid függvényhez képest, hogy ha indexet hozol létre egy UNIQUEIDENTIFIER mezőn, az új érték, amit a newid segítségével generáltak, nem fix, így az új érték miatt az index B+ fa változása véletlenszerű lesz. Ha a newsequentialid által generált új érték reguláris, akkor az index B+ fa változása szabályos. A szabályosság és szabálytalanság teljesítményfejlődéshez vezet.

2: Az UNIQUEIDENTIFIER nagyon kényelmes elsődleges kulcsként működik, amelynek pótolhatatlan előnyei vannak olyan műveletekben, mint az adatok összevonása
Azonban a hagyományos GUID-k decentralizációja miatt, ha a fő kulcsot egy klaszterezett indexhez adjuk, az sokkal kevésbé hatékony a rekordok behelyezése során

Az SQL SERVER 2005 új funkciót ad hozzá, a NEWSEQUENTIALID-et, amelyet az MSDN így magyaráz:
Hozz létre egy GUID-et a megadott gépen, amely nagyobb, mint bármely korábban a függvény által generált GUID.
A NEWSEQUENTIALID() nem hivatkozható a lekérdezésben.
Megjegyzés: Ez azt jelenti, hogy csak egy adatbázisoszlop ALAPÉRTELMEZETT ÉRTÉKEKÉNT használható, és nem hajthat végre olyan állításokat, mint a SELECT NEWSEQUENTIALID().
A NEWSEQUENTIALID() által generált GUID csak akkor egyedi abban a számítógépben, ha a számítógépnek nincs hálózati kártyája.
Megjegyzés: Ez a mondat téves, csak akkor kellene lennie, hogy a számítógépnek hálózati kártyája van, a generált GUID egyedi a világban
Használhatod a NEWSEQUENTIALID() GUID-et a GUID generálásához, hogy csökkentsd az oldal vitatkozását a levélszintű indexen.





Előző:Az EasyUI Control Tab bekapcsolási funkciót ad hozzá
Következő:c#/.Net gyűjtemény tömbös rétegenként érték
Közzétéve 2018. 02. 01. 10:43:26 |
Igen, köszönöm! A bérbeadó képességei nagyon nehézek! Keményen
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com