Saya biasanya menggunakan ID kenaikan otomatis sebagai Kunci Utama dalam database. Saya mencoba mempelajari manfaat menggunakan GUID. Saya telah membaca artikel ini: https://betterexplained.com/articles/the-quick-guide-to-guids/
Saya menyadari bahwa GUID ini digunakan untuk mengidentifikasi objek di tingkat aplikasi. Apakah mereka juga disimpan sebagai kunci utama di tingkat basis data. Sebagai contoh, katakanlah saya memiliki kelas berikut:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Katakanlah saya ingin membuat orang baru di memori dan kemudian memasukkan Orang ke dalam basis data. Bisakah saya melakukan ini:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Katakanlah saya memiliki database yang berisi jutaan dan jutaan baris dengan GUID sebagai Kunci Utama. Apakah ini akan selalu unik? Apakah saya bahkan memahami GUID dengan benar?
Saya membaca artikel ini sebelumnya: http://enterprisecraftsmanship.com/2014/11/15/cqs-with-database-generated-ids/ . Ini sedikit membingungkan saya karena tampaknya merekomendasikan media bahagia antara GUID dan integer sebagai Kunci Utama.
Edit 11/06/18
Saya percaya bahwa Guids lebih cocok daripada int untuk kebutuhan saya. Saya menggunakan CQRS lebih banyak hari ini dan GUID cocok lebih baik.
Saya memperhatikan bahwa beberapa pengembang memodelkan GUID sebagai string dalam model domain, misal di sini: https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/Services/Ordering/Ordering.OrderingMomain/AggregatesModel/BuyerAggregate/ Buyer.cs - dalam kasus ini: IdentityGuid adalah GUID yang dimodelkan sebagai string. Apakah ada alasan untuk melakukan ini selain dari yang dinyatakan di sini: Gunakan objek nilai khusus atau Panduan sebagai pengidentifikasi entitas dalam sistem terdistribusi? . Apakah "normal" untuk memodelkan GUID sebagai string atau haruskah saya memodelkannya sebagai GUID dalam model dan basis data?