Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 30236|Atsakyti: 1

[Šaltinis] EF nustato pirminio rakto ID į savaime augančio tipo guid

[Kopijuoti nuorodą]
Paskelbta 2016-11-04 13:27:38 | | | |


Subjekto subjekto kodas yra toks:



Įterpimo kodas yra toks:



Mes nustatome tik pavadinimo reikšmę ir nepriskiriame reikšmės id, pažvelkime, kas yra sugeneruotas sql sakinys??? , kaip nurodyta toliau:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Vardas])
OUTPUT įterptas. [Id] Į @generated_keys
REIKŠMĖS (@0)
SELECT t.[Id]
FROM @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
KUR @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architektaswww.itsvse.com'


Nustatėme, kad lentelėje INSERT TestTab įterpiamas tik laukas Pavadinimas, ar ID turi numatytąją reikšmę??? Mes nustatėme, kad

ef padėjo man nustatyti numatytąjį Id pirminio rakto reikšmės tipą, numatytąją reikšmę arba susiejimą "(newsequentialid())", ir panaudojo funkciją newsequentialid(), kuri pristatoma taip:


1.:Didžiausias funkcijos newsequentialid pranašumas prieš funkciją newid yra tas, kad jei sukuriate indeksą UNIQUEIDENTIFIER lauke, nauja reikšmė, sugeneruota naudojant newid, nėra fiksuota, todėl dėl naujos reikšmės indekso B+ medžio pokytis yra atsitiktinis. Jei nauja naujienų ekviencialido sukurta reikšmė yra taisyklinga, tada indekso B+ medžio pokytis yra reguliarus. Reguliarumas ir nereguliarumas lemia veiklos rezultatų gerinimą.

2: UNIQUEIDENTIFIER yra labai patogus dalykas kaip pirminis raktas, turintis nepakeičiamų pranašumų tokiose operacijose kaip duomenų sujungimas
Tačiau dėl įprastų GUID decentralizacijos, jei pirminis raktas bus pridėtas prie sugrupuoto indekso, jis bus daug mažiau efektyvus įterpiant įrašus

SQL SERVER 2005 prideda naują funkciją, vadinamą NEWSEQUENTIALID, kurią MSDN paaiškina:
Nurodytame kompiuteryje sukurkite GUID, kuris yra didesnis už bet kurį anksčiau funkcijos sugeneruotą GUID.
NEWSEQUENTIALID() užklausoje nurodyti negalima.
Pastaba: Tai reiškia, kad jis gali būti naudojamas tik kaip duomenų bazės stulpelio NUMATYTOJI REIKŠMĖ ir negali vykdyti tokių teiginių kaip SELECT NEWSEQUENTIALID().
NEWSEQUENTIALID() sugeneruotas GUID yra unikalus tame kompiuteryje tik tuo atveju, jei kompiuteryje nėra tinklo plokštės.
Pastaba: Šis sakinys yra neteisingas, turėtų būti, kad tik tada, kai kompiuteris turi tinklo plokštę, sugeneruotas GUID yra unikalus pasaulyje
Galite naudoti NEWSEQUENTIALID(), kad sugeneruotumėte GUID, kad sumažintumėte puslapio nesutarimus lapo lygio indekse.





Ankstesnis:"EasyUI Control Tab" prideda perjungimo funkciją
Kitą:c#/.Net surinkimo masyvo sluoksnio reikšmė
Paskelbta 2018-02-01 10:43:26 |
Taip, ačiū! Nuomotojo įgūdžiai yra labai sunkūs! Sunku
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com