Tôi thường sử dụng ID gia tăng tự động làm Khóa chính trong cơ sở dữ liệu. Tôi đang cố gắng tìm hiểu những lợi ích của việc sử dụng GUID. Tôi đã đọc bài viết này: https://betterexplained.com/articles/the-quick-guide-to-guids/
Tôi nhận ra rằng các GUID này được sử dụng để xác định các đối tượng ở cấp ứng dụng. Có phải chúng cũng được lưu trữ như là khóa chính ở cấp cơ sở dữ liệu. Ví dụ, giả sử tôi có lớp sau:
public class Person
{
public GUID ID;
public string Name;
..
//Person Methods follow
}
Nói rằng tôi muốn tạo một người mới trong bộ nhớ và sau đó chèn Người vào cơ sở dữ liệu. Tôi chỉ có thể làm điều này:
Person p1 = new Person();
p1.ID=GUID.NewGUID();
PersonRepository.Insert(p1);
Giả sử tôi có cơ sở dữ liệu chứa hàng triệu và hàng triệu hàng với GUID làm Khóa chính. Điều này sẽ luôn luôn là duy nhất? Tôi thậm chí có hiểu chính xác GUID không?
Tôi đã đọc bài viết này sớm hơn: http : //enterpriseccraft Skill.com/2014/11/15/cqs-with-database-generated-ids/ . Nó làm tôi bối rối một chút vì nó dường như đề xuất một phương tiện hạnh phúc giữa GUID và số nguyên làm Khóa chính.
Chỉnh sửa 11/06/18
Tôi đã tin rằng Guids phù hợp hơn ints cho yêu cầu của tôi. Tôi đang sử dụng CQRS nhiều hơn những ngày này và GUID phù hợp hơn.
Tôi nhận thấy rằng một số nhà phát triển mô hình hóa các GUID dưới dạng chuỗi trong mô hình miền, ví dụ như ở đây: https://github.com/dotnet-arch architecture / eShopOnContainers / blob / dev / src / Service / ORdering / Domain.DAggregatesModel / Banger Người mua.cs - trong trường hợp này: IdentityGuid là một GUID được mô hình hóa dưới dạng chuỗi. Có bất kỳ lý do để làm điều này ngoài những gì được nêu ở đây: Sử dụng một đối tượng giá trị tùy chỉnh hoặc Hướng dẫn làm định danh thực thể trong một hệ thống phân tán? . Việc mô hình hóa GUID thành một chuỗi là "bình thường" hay tôi nên mô hình hóa nó như một GUID trong mô hình và cơ sở dữ liệu?