Praveen Kumar

Praveen Kumar

  • NA
  • 235
  • 22.2k

How to avoid entry of duplicate attribute?

May 29 2020 4:49 AM
Do not allow entry of duplicate attribute value for individual attribute (user code)
 
 
 
  1. public UserCode UpdateUserDefinedField(UserCode userCode, User user)  
  2. {  
  3. var dbCode = DbContext.UserCodes.Find(userCode.Id);  
  4. dbCode.Name = userCode.Name;  
  5. dbCode.Description = userCode.Description;  
  6. if (dbCode.UserCodeTypeId != userCode.UserCodeTypeId)  
  7. if (dbCode.UserCodeValidValues.Any(x=>x.UserCodeValues.Any()))  
  8. throw new NotSupportedException("You cannot change the attribute type because it has values in use.");  
  9. dbCode.UserCodeTypeId = userCode.UserCodeTypeId;  
  10. dbCode.IsFreeformTextValue = userCode.IsFreeformTextValue;  
  11. dbCode.IsMandatory = userCode.IsMandatory;  
  12. // Need to handle unique constraint violation  
  13. foreach (UserCodeValidValue ucvv in userCode.UserCodeValidValues)  
  14. {  
  15. UserCodeValidValue compare = dbCode.UserCodeValidValues.Where(x => x.Id == ucvv.Id).FirstOrDefault();  
  16. if (compare != null)  
  17. {  
  18. if (ucvv.Description != compare.Description || ucvv.CodeValue != compare.CodeValue)  
  19. {  
  20. compare.CodeValue = ucvv.CodeValue;  
  21. compare.Description = ucvv.Description;  
  22. UpdateWithUser(compare, user.UserId, "UpdateUserDefinedField");  
  23. }  
  24. }  
  25. else  
  26. {  
  27. ucvv.UserCode = dbCode;  
  28. AddWithUser(ucvv, user.UserId, "UpdateUserDefinedField");  
  29. }  
  30. }  
  31. UpdateWithUser(dbCode, user.UserId, "UpdateUserDefinedField");  
  32. return dbCode;  


Answers (8)