Tôi muốn sử dụng System.Guid nhập làm id cho tất cả các bảng của tôi trong ứng dụng api web asp.net. Nhưng tôi cũng sử dụng Asp.net Identity, sử dụng một mã số -type (để lưu trữ các hướng dẫn). Vì vậy, tôi tự hỏi tại sao nó sử dụng chuỗi id thay vì System.Guid theo mặc định? Và lựa chọn nào tốt hơn để sử dụng thông qua tất cả ứng dụng - Hướng dẫn id hoặc chuỗi -ID id? Trong trường hợp sử dụng chuỗi - cách thích hợp nhất và đáng tin cậy để tạo id - mã mới hoặc trong cơ sở dữ liệu là gì?Tại sao asp.net Identity id người dùng là chuỗi?
Trả lời
Tùy thuộc vào phiên bản của xác thực ASP.Net bạn đang sử dụng, trên cơ sở dữ liệu ASP.NET Identity v2 nên lưu trữ nó dưới dạng bộ định danh duy nhất (Guid) trong bảng AspNetUsers
. Trong nhiều phiên bản trước, nó sẽ lưu trữ id người dùng như một int trong bảng webpages_Membership
.
Tôi tin rằng nó hiển thị nó như một chuỗi để nó có thể là bất kỳ loại dữ liệu nào bạn thích dưới mui xe và sau đó bạn có thể đưa nó vào trong mã theo yêu cầu.
Hi Tim, tôi đang sử dụng phiên bản mới nhất của hệ thống thành viên cho ASP.NET - ASP.NET Identity. Tôi vẫn không chắc chắn, thực hành tốt nhất để sử dụng chuỗi cho tất cả các bảng trong cơ sở dữ liệu của tôi hoặc chuyển đổi mọi thứ thành GUID là gì? – Ostap
@ user3460585 int vs Hướng dẫn là đối số tuổi. Xem các câu trả lời sau: http://dba.stackexchange.com/a/266/6868 http://blog.codinghorror.com/primary-keys-ids-versus-guids/ http://programmers.stackexchange.com/a/189031/86760 – trailmax
Xin lỗi, tôi không nhận ra bạn đang yêu cầu cơ sở dữ liệu của bạn. Nói chung những gì chúng tôi làm là lưu trữ tên người dùng chống lại một hồ sơ người dùng trong cơ sở dữ liệu của chúng tôi mà sau đó chúng tôi có thể tham khảo hồ sơ ASP.Net, nó cũng detaches bạn từ tầng thành viên cơ bản. – Tim
Với ASP.NET Core, bạn có một cách rất đơn giản để chỉ định loại dữ liệu bạn muốn cho các mô hình của Identity.
Bước đầu tiên, các lớp sắc override từ < string>-< loại dữ liệu bạn muốn>:
public class ApplicationUser : IdentityUser<Guid>
{
}
public class ApplicationRole : IdentityRole<Guid>
{
}
Khai báo bối cảnh cơ sở dữ liệu của bạn, sử dụng các lớp học của bạn và loại dữ liệu bạn muốn:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
Và trong lớp khởi động, hãy khai báo dịch vụ nhận dạng bằng các mô hình của bạn và khai báo loại dữ liệu bạn muốn cho phần tử gốc ary keys:
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext, Guid>()
.AddDefaultTokenProviders();
Để biết thông tin, hiện có một chủ đề trong tài liệu chính thức: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-primary-key-configuration – AdrienTorris
- 1. Người dùng cập nhật Asp.net Identity 2.0
- 2. Nhận ASP.NET Identity Người dùng hiện tại Xem
- 3. Thay đổi loại Id người dùng thành int trong ASP.NET Identity trong VS2015
- 4. asp.net MVC nhận hiện tại người dùng đăng nhập id
- 5. ASP.net Identity 2.0 Đăng xuất một người dùng khác
- 6. ASP.NET Identity Custom PasswordValidator kiểm tra tên người dùng
- 7. Chuỗi NSStringVới loại trả vềFormat, tại sao lại là "id"?
- 8. Tại sao trong Asp.Net Identity 2.0 PhoneNumber là [nvarchar] (tối đa)
- 9. ASP.NET Identity & ASP.NET Membership Provider "Mashup"
- 10. Lấy danh sách người dùng đã đăng nhập trong ASP.NET Identity
- 11. ASP.net là người dùng trong vai trò
- 12. Làm mới vé cookie của người dùng trong ASP.Net Core Identity
- 13. Sự khác biệt giữa ID người dùng thực, ID người dùng hiệu quả và ID người dùng đã lưu
- 14. Tạo người dùng Asp.net Identity trong phương thức Seed của Db Initializer
- 15. Thêm tên và họ của người dùng vào ASP.NET Identity 2?
- 16. Xác nhận quyền sở hữu người dùng trong ASP.NET Identity EF
- 17. Kiểm tra xem người dùng có trong vai trò trong asp.net mvc Identity
- 18. ASP.NET Identity 2 Ghi nhớ tôi - Người dùng bị đăng xuất
- 19. ASP.NET Identity 2 UserManager nhận được tất cả người dùng async
- 20. ASP.net Identity SecurityStampValidator OnValidateIdentity regenerateIdentity tham số
- 21. Cách nhận ID người dùng hiện tại Prestashop?
- 22. Cách lấy ID người dùng hiện tại trong CloudKit?
- 23. ID người dùng cho tên người dùng tweepy
- 24. ASP.NET Core Identity 3 Cookie timeout
- 25. ASP.NET Identity với nhiều ứng dụng
- 26. Tôi có nên sử dụng tên người dùng hoặc ID của người dùng để tham chiếu đến người dùng được xác thực trong ASP.NET
- 27. Tại sao chỉ có thể chỉ chuỗi giao diện người dùng trong Android cập nhật giao diện người dùng?
- 28. Cách nhận người dùng hiện tại trong lõi asp.net
- 29. C# asp.net nhận tên người dùng
- 30. Thành viên ASP.NET MVC - người dùng bị đăng xuất thường xuyên - không biết tại sao
"Lý do" được giải thích [ở đây] (http://stackoverflow.com/q/19238621/304683) - cả hai câu trả lời trong bài đăng đó sẽ thực sự hữu ích. Hth. – EdSF
Cảm ơn @EdSF, nhưng tôi vẫn có một câu hỏi mở về cách tốt nhất để tổ chức ứng dụng - chuỗi-guids hoặc Guids (uniqueidentifier) cho id là gì? – Ostap
Tùy thuộc vào yêu cầu _your_. Xem [câu trả lời của Rick Anderson (MSFT)] (http://stackoverflow.com/a/24152085/304683) để được hướng dẫn. – EdSF