Tôi đoán đây là một câu hỏi khác về mã hóa cứng và thực tiễn tốt nhất. Giả sử tôi có một danh sách các giá trị, giả sử là trái cây, được lưu trữ trong cơ sở dữ liệu (nó cần phải có trong cơ sở dữ liệu vì bảng được sử dụng cho các mục đích khác như báo cáo SSRS), với ID:
1 Apple
2 Banana
3 Grapes
Tôi có thể trình bày chúng cho người dùng, anh ta chọn một, nó được lưu trong hồ sơ của anh ta dưới dạng FavouriteFnut và ID được lưu trong hồ sơ của anh ta trong cơ sở dữ liệu.
Khi nói đến các quy tắc kinh doanh / logic miền, các khuyến nghị để gán logic cho các giá trị cụ thể là gì. Giả sử nếu người dùng đã chọn Nho tôi muốn thực hiện một số tác vụ bổ sung, cách tốt nhất để tham chiếu giá trị Nho:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
hay cái gì khác?
Vì tất nhiên FavouriteFnut sẽ được sử dụng trong toàn bộ ứng dụng, danh sách có thể được thêm vào hoặc chỉnh sửa.
Ai đó có thể quyết định rằng họ muốn 'Nho' được đổi tên thành 'Nho' và điều này tất nhiên sẽ phá vỡ tùy chọn chuỗi mã hóa cứng.
ID mã hóa cứng không hoàn toàn rõ ràng, như được hiển thị, bạn chỉ cần thêm một nhận xét để nhanh chóng xác định đó là mục nào.
Tùy chọn enum liên quan đến việc sao chép dữ liệu từ cơ sở dữ liệu có vẻ sai vì nó có thể không đồng bộ.
Dù sao, cảm ơn trước cho bất kỳ ý kiến hoặc đề xuất.
MyApplication.Grape.ID
đang nói lắp, có thể nói như vậy. "Apple" không phải là "Red_Apple" nhiều hơn ID 3 cũng là 4. Vì vậy, tiềm năng đổi tên "Apple" thành "Red_Apple" không có ý nghĩa gì hơn khi tuyên bố rằng 3 là 4 (và thậm chí là 3). Điểm của một enum là trừu tượng hóa DNA số của nó. Vì vậy, có lẽ đã đến lúc phải thực sự tách rời các khóa DB quan hệ tùy ý, theo nghĩa đen không có ý nghĩa gì trong các mô hình kinh doanh của một người.