Ich verwende in der Regel Auto-Inkrement-IDs als Primärschlüssel in Datenbanken. Ich versuche, die Vorteile der Verwendung von GUIDs zu lernen. Ich habe diesen Artikel gelesen: https://betterexplained.com/articles/the-quick-guide-to-guids/
Mir ist klar, dass diese GUIDs verwendet werden, um Objekte auf Anwendungsebene zu identifizieren. Werden sie auch als Primärschlüssel auf Datenbankebene gespeichert? Angenommen, ich hatte die folgende Klasse:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Angenommen, ich wollte eine neue Person im Speicher erstellen und dann die Person in eine Datenbank einfügen. Kann ich das einfach machen:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Angenommen, ich hatte eine Datenbank mit Millionen und Abermillionen von Zeilen mit einer GUID als Primärschlüssel. Wird das immer einzigartig sein? Verstehe ich überhaupt GUIDs richtig?
Ich habe diesen Artikel früher gelesen: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Es verwirrt mich ein wenig, da es den Anschein hat, als würde ich ein fröhliches Medium zwischen GUIDs und Ganzzahlen als Primärschlüssel empfehlen.
Edit 11/06/18
Ich bin der Überzeugung, dass Guids für meine Anforderungen besser geeignet sind als Ints. Ich verwende CQRS heutzutage häufiger und GUIDs passen besser dazu.
Ich habe festgestellt, dass einige Entwickler die GUIDs als Zeichenfolgen im Domänenmodell modellieren, z. B. hier: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs - in diesem Fall: IdentityGuid ist eine GUID, die als Zeichenfolge modelliert wird. Gibt es einen anderen Grund als den hier angegebenen: Verwenden Sie ein benutzerdefiniertes Wertobjekt oder eine Guid als Entitätskennung in einem verteilten System? . Ist es "normal", die GUID als Zeichenfolge zu modellieren, oder sollte ich sie als GUID in Modell und Datenbank modellieren?