J'utilise généralement des ID d'incrémentation automatique comme clés primaires dans les bases de données. J'essaie de découvrir les avantages de l'utilisation des GUID. J'ai lu cet article: https://betterexplained.com/articles/the-quick-guide-to-guids/
Je me rends compte que ces GUID sont utilisés pour identifier les objets au niveau de l'application. Sont-ils également stockés en tant que clé primaire au niveau de la base de données. Par exemple, disons que j'ai eu la classe suivante:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Disons que je voulais créer une nouvelle personne en mémoire, puis insérer la personne dans une base de données. Puis-je simplement faire ceci:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Disons que j'avais une base de données contenant des millions et des millions de lignes avec un GUID comme clé primaire. Est-ce que ce sera toujours unique? Suis-je même comprendre correctement les GUID?
J'ai lu cet article plus tôt: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Cela m'embrouille un peu car il semble recommander un juste milieu entre les GUID et les entiers comme clés primaires.
Modifier le 11/06/18
J'en suis venu à croire que les Guids sont plus adaptés que les ints à mes besoins. J'utilise CQRS plus ces jours-ci et les GUID s'intègrent mieux.
Je remarque que certains développeurs modélisent les GUID sous forme de chaînes dans le modèle de domaine, par exemple ici: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs - dans ce cas: IdentityGuid est un GUID modélisé sous forme de chaîne. Y a-t-il une autre raison que celle indiquée ici: utiliser un objet de valeur personnalisé ou un GUID comme identifiant d'entité dans un système distribué? . Est-il «normal» de modéliser le GUID en tant que chaîne ou dois-je le modéliser en tant que GUID dans le modèle et la base de données?