Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 30236|Antwort: 1

[Quelle] EF setzt die primäre Schlüssel-ID auf den guid-selbstwachsenden Typ

[Link kopieren]
Veröffentlicht am 04.11.2016 13:27:38 | | | |


Der Entitätscode der Gesellschaft ist wie folgt:



Der Einfügecode lautet wie folgt:



Wir setzen nur den Wert von Name und weisen keinen Wert id zu, schauen wir uns an, was die generierte SQL-Anweisung ist??? , wie folgt:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [TestTab] ([Name])
OUTPUT eingefügt. [Id] IN @generated_keys
WERTE (@0)
WÄHLEN SIE T. [ID]
VON @generated_keys ALS G JOIN [dbo]. [TestTab] AS T ON g.[Id] = t.[Id]
WO @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


Wir haben festgestellt, dass die INSERT TestTab-Tabelle nur das Name-Feld einfügt, hat Id einen Standardwert??? Wir haben festgestellt, dass

ef hat mir geholfen, den Standardwerttyp des Id-Primärschlüssels, den Standardwert oder die Bindung "(newsequentialid())" einzustellen und die Funktion newsequentialid() zu verwenden, die wie folgt eingeführt wird:


1.: Der größte Vorteil der newsequentialid-Funktion gegenüber der Newid-Funktion ist, dass wenn man einen Index auf einem UNIQUEIDENTIFIER-Feld erstellt, der mit newid generierte neue Wert nicht festgelegt ist, sodass der neue Wert die Änderung im Index B+-Baum zufällig macht. Wenn der neue Wert, der vom Newsequentialid erzeugt wird, regulär ist, dann ist die Änderung des Index B+-Baums regulär. Regelmäßigkeit und Unregelmäßigkeit führen zu Leistungsverbesserungen.

2: UNIQUEIDENTIFIER ist als Primärschlüssel sehr praktisch, was bei Operationen wie Datenzusammenführung unersetzliche Vorteile hat
Aufgrund der Dezentralisierung gewöhnlicher GUIDs ist es jedoch, wenn der Primärschlüssel einem Cluster-Index hinzugefügt wird, beim Einfügen von Datensätzen deutlich weniger effizient

SQL SERVER 2005 fügt eine neue Funktion namens NEWSEQUENTIALID hinzu, die MSDN erklärt:
Erstellen Sie auf der angegebenen Maschine eine GUID, die größer ist als alle zuvor von der Funktion erzeugten GUID.
NEWSEQUENTIALID() kann in der Abfrage nicht referenziert werden.
Hinweis: Das bedeutet, dass es nur als STANDARDWERT einer Datenbankspalte verwendet werden kann und keine Anweisungen wie SELECT NEWSEQUENTIALID() ausführen kann.
Die von NEWSEQUENTIALID() erzeugte GUID ist in diesem speziellen Computer nur dann eindeutig, wenn der Computer keine Netzwerkkarte besitzt.
Hinweis: Dieser Satz ist falsch, es sollte so sein, dass nur wenn der Computer eine Netzwerkkarte hat, die erzeugte GUID weltweit einzigartig ist
Sie können NEWSEQUENTIALID() verwenden, um eine GUID zu generieren, die Seitenkonflikte im Blatt-Index reduziert.





Vorhergehend:EasyUI Control Tab fügt eine Umschaltfunktion hinzu
Nächster:c#/.Net Collection Array layer by layer value
Veröffentlicht am 01.02.2018 10:43:26 |
Ja, danke! Die Fähigkeiten des Vermieters sind sehr schwierig! Hart
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com