This question is locked. New answers and comments are not allowed.
Hello
I need for two things:
1. Load a full list of some class values
2. Use mnemonics constants of some (or all) class values.
For example, I want to check something like:
if(mainContractor.ApprovalStatus == ContractorApprovalStatus.NotApproved) throw new Exception(....I code the constants like this:
public static ContractorApprovalStatus NotApproved{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 0); }}public static ContractorApprovalStatus Approved{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 1); }}public static ContractorApprovalStatus RMCApproved{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 2); }}public static ContractorApprovalStatus ApprovalNotRequired{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 3); }}public static ContractorApprovalStatus ApprovalRefused{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 4); }}public static ContractorApprovalStatus ApprovalInProgress{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 5); }}public static ContractorApprovalStatus InvitationIssued{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 6); }}public static ContractorApprovalStatus BlockSpecificApproved{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 7); }}public static ContractorApprovalStatus ApplicationPackSent{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == 8); }}Well, numeric constants is a bad practice, but I generate the code automatically with a query:
SELECT 'public static ContractorApprovalStatus '+ replace(StatusName, ' ', '') +'{ get { return PMSDataSession.Context.ContractorApprovalStatus.FirstOrDefault(s => s.ID == '+ rtrim(CAST(ContractorApprovalStatus_id AS CHAR)) +');}}'FROM ContractorApprovalStatusORDER BY ContractorApprovalStatus_idIt looks fine to me, but I don't like so an SQL query is running every time when I use a 'constant' ContractorApprovalStatus.NotApproved.
The table is absolutely static. probably I cal load all the table in a cache? (it is a shame I never used it)
What would be the best practice from the optimization POW?