Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 30236|Répondre: 1

[Source] EF définit la clé primaire Id au type auto-croissant des guid

[Copié le lien]
Publié sur 04/11/2016 13:27:38 | | | |


Le code de l’entité est le suivant :



Le code d’insertion est le suivant :



Nous ne fixons que la valeur de name et n’attribuons pas de valeur à id, voyons ce qu’est l’instruction SQL générée ??? , comme suit :

exec sp_executesql N’DECLARE @generated_keys table([Id] identifiant unique)
INSÉRER [dbo]. [TestTab] ([Nom])
SORTIE insérée. [Id] DANS @generated_keys
VALEURS (@0)
SELECT t.[Id]
DE @generated_keys AS g JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
OÙ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectewww.itsvse.com'


Nous avons constaté que la table INSERT TestTab n’insère que le champ Nom, Id a-t-il une valeur par défaut ??? Nous avons découvert que

ef m’a aidé à définir le type de valeur par défaut de la clé primaire Id, la valeur par défaut ou la liaison « (newsequentialid()) », et a utilisé la fonction newsequentialid(), introduite comme suit :


1. : Le plus grand avantage de la fonction newsequentialid par rapport à la fonction newid est que si vous créez un index sur un champ UNIQUEIDENTIFIER, la nouvelle valeur générée avec newid n’est pas fixe, donc la nouvelle valeur rend aléatoire le changement dans l’arbre d’indice B+. Si la nouvelle valeur produite par le newsequentialid est régulière, alors le changement de l’arbre d’indice B+ est régulier. La régularité et l’irrégularité conduisent à des améliorations de performance.

2 : UNIQUEIDENTIFIER est une chose très pratique à faire en tant que clé primaire, ce qui présente des avantages irremplaçables dans des opérations telles que la fusion de données
Cependant, en raison de la décentralisation des GUID ordinaires, si la clé primaire est ajoutée à un index clusteré, elle sera beaucoup moins efficace lors de l’insertion des enregistrements

SQL SERVER 2005 ajoute une nouvelle fonction appelée NEWSEQUENTIALID, que MSDN explique :
Créez un GUID sur la machine spécifiée qui soit plus grand que tout GUID précédemment généré par la fonction.
NEWSEQUENTIALID() ne peut pas être référencé dans la requête.
Note : Cela signifie qu’il ne peut être utilisé que comme VALEUR PAR DÉFAUT d’une colonne de base de données, et ne peut pas exécuter des instructions comme SELECT NEWSEQUENTIALID().
Le GUID généré par NEWSEQUENTIALID() n’est unique dans cet ordinateur particulier que si celui-ci ne possède pas de carte réseau.
Note : Cette phrase est fausse, il devrait être que ce n’est que lorsque l’ordinateur possède une carte réseau, que le GUID généré est unique dans le monde
Vous pouvez utiliser NEWSEQUENTIALID() pour générer un GUID afin de réduire la contention de page sur l’index feuille.





Précédent:L’onglet EasyUI Control ajoute une fonction de basculement
Prochain:c#/.Net collection tableau couche par valeur de couche
Publié sur 01/02/2018 10:43:26 |
Oui, merci! Les compétences du propriétaire sont très difficiles ! Difficile
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com