Generalnie używam identyfikatorów automatycznego przyrostu jako kluczy podstawowych w bazach danych. Próbuję poznać zalety korzystania z GUID. Przeczytałem ten artykuł: https://betterexplained.com/articles/the-quick-guide-to-guids/
Zdaję sobie sprawę, że te identyfikatory GUID są używane do identyfikacji obiektów na poziomie aplikacji. Czy są one również przechowywane jako klucz podstawowy na poziomie bazy danych. Powiedzmy, że miałem następującą klasę:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Powiedzmy, że chciałem utworzyć nową osobę w pamięci, a następnie wstawić osobę do bazy danych. Czy mogę to po prostu zrobić:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Powiedzmy, że mam bazę danych zawierającą miliony wierszy z identyfikatorem GUID jako kluczem podstawowym. Czy to zawsze będzie wyjątkowe? Czy w ogóle rozumiem identyfikatory GUID?
Przeczytałem ten artykuł wcześniej: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Trochę mnie to myli, ponieważ wydaje się, że polecam szczęśliwe medium między identyfikatorami GUID a liczbami całkowitymi jako kluczami głównymi.
Edytuj 11/06/18
Doszedłem do wniosku, że Przewodniki są bardziej odpowiednie niż ints do moich wymagań. W dzisiejszych czasach używam CQRS, a identyfikatory GUID są ładniejsze.
Zauważam, że niektórzy programiści modelują identyfikatory GUID jako ciągi w modelu domeny, np. Tutaj: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs - w tym przypadku: IdentityGuid to identyfikator GUID modelowany jako ciąg. Czy jest jakiś powód, aby to zrobić poza tym, co podano tutaj: Użyć obiektu wartości niestandardowej lub identyfikatora GUID jako identyfikatora jednostki w systemie rozproszonym? . Czy modelowanie identyfikatora GUID jako ciągu jest „normalne”, czy powinienem modelować go jako identyfikator GUID w modelu i bazie danych?