Genelde veritabanlarında Birincil Anahtar olarak otomatik artış kimliklerini kullanırım. GUID kullanmanın yararlarını öğrenmeye çalışıyorum. Bu makaleyi okudum: https://betterexplained.com/articles/the-quick-guide-to-guids/
Bu GUID'lerin uygulama seviyesindeki nesneleri tanımlamak için kullanıldığını biliyorum. Ayrıca veritabanı düzeyinde birincil anahtar olarak depolanıyorlar. Örneğin, şu sınıfa sahip olduğumu söyle:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Bellekte yeni bir kişi oluşturmak istediğimi ve ardından kişiyi veritabanına eklediğimi söyleyin. Bunu sadece yapabilir miyim:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Diyelim ki Birincil Anahtar olarak bir GUID içeren milyonlarca ve milyonlarca satır içeren bir veritabanım vardı. Bu her zaman benzersiz olacak mı? GUID'leri doğru bir şekilde anlıyor muyum?
Bu makaleyi daha önce okudum: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . GUID'ler ve tamsayılar arasında Birincil Anahtar olarak mutlu bir ortam önerdiği göründüğü için beni biraz şaşırtıyor.
Düzenle 11/06/18
Kılavuzlarımın gereksinimlerime uygunluktan daha uygun olduğuna inanmaya başladım. Bugünlerde CQRS kullanıyorum ve GUID'ler daha iyi bir şekilde uyuyor.
Bazı geliştiriciler burada etki alanı modeli eg dizeleri olarak GUID'lerini modellemek bildirisini yapın: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/ Buyer.cs - bu durumda: IdentityGuid bir dize olarak modellenmiş bir GUID'dir. Bunu burada belirtilenler dışında yapmak için herhangi bir sebep var mı: Dağıtılmış bir sistemde bir varlık tanımlayıcısı olarak bir özel değer nesnesi ya da bir Kılavuz kullanın? . GUID'i bir dize olarak modellemek "normal" mi, yoksa model ve veritabanında GUID olarak mı modellemeliyim?