In genere utilizzo gli ID di incremento automatico come chiavi primarie nei database. Sto cercando di imparare i vantaggi dell'utilizzo dei GUID. Ho letto questo articolo: https://betterexplained.com/articles/the-quick-guide-to-guids/
Mi rendo conto che questi GUID vengono utilizzati per identificare oggetti a livello di applicazione. Sono anche memorizzati come chiave primaria a livello di database. Ad esempio, supponiamo che avessi la seguente classe:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Supponiamo che volessi creare una nuova persona in memoria e quindi inserire la persona in un database. Posso fare solo questo:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Supponiamo di avere un database contenente milioni e milioni di righe con un GUID come chiave primaria. Sarà sempre unico? Comprendo correttamente i GUID?
Ho letto questo articolo prima: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Mi confonde un po 'come sembra raccomandare un mezzo felice tra GUID e numeri interi come chiavi primarie.
Modifica l'11 / 06/18
Sono arrivato a credere che le guide siano più adatte degli ints per le mie esigenze. Sto usando CQRS di più in questi giorni e i GUID si adattano meglio.
Noto che alcuni sviluppatori modellano i GUID come stringhe nel modello di dominio, ad esempio qui: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs - in questo caso: IdentityGuid è un GUID modellato come una stringa. C'è qualche motivo per farlo oltre a quanto indicato qui: utilizzare un oggetto valore personalizzato o un Guid come identificatore di entità in un sistema distribuito? . È "normale" modellare il GUID come stringa o devo modellarlo come GUID nel modello e nel database?