using LMS.Common.Enum; using Newtonsoft.Json; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace LMS.Repository.DB; public class Options { [Key] public required string Key { get; set; } = string.Empty; /// /// Value of the option,这个值是一个json字符串 /// public string? Value { get; set; } = string.Empty; public OptionTypeEnum Type { get; set; } = OptionTypeEnum.String; // 写一个字段,映射Value,判断是不是json字符串,是的话就解析成对象 [NotMapped] public object? ValueObject { get { if (string.IsNullOrEmpty(Value)) { return Value; } if (Type == OptionTypeEnum.JSON) { return JsonConvert.DeserializeObject(Value ?? "{}"); } if (Type == OptionTypeEnum.Number) { return Convert.ToDouble(Value); } return Value; } set { if (value == null) { Value = string.Empty; return; } if (Type == OptionTypeEnum.JSON) { Value = JsonConvert.SerializeObject(value); } else { Value = value.ToString(); } } } }