我有一个模型的字段/属性需要存储为字符串。但是,它将采用分隔格式,因此在代码中,我希望能够
get
和 set
将其作为可枚举。我正在使用 EFCore 使用此类创建代码优先迁移,因此我认为该属性需要公开。目前,我有这个:
public class DropdownOptions
{
public string Options { get; set; } = "";
public string[] GetOptions() => Options.Split('|');
public void SetOptions(IEnumerable<string> options) => Options = string.Join('|', options);
}
这样做的麻烦在于
Options
可以直接访问。我理想的最终情况是 Options
无法从课堂外访问。但我不知道如何设置它,以便 EF 可以设置字符串值,但不能设置我的代码。
任何见解 - 即使是“这已经是你能得到的最好的了。小心点”将不胜感激。
您可以为此使用数据传输对象 (DTO)。
public class DropdownOptions
{
public string Options { get; set; } = "";
}
public class DropdownOptionsDto
{
public string[] Options { get; set; }
}
然后在从数据库获取下拉选项的代码中,像这样进行平滑:
var dropdownOptions = _dbContext.DropdownOptions
.Tolist()
.Select(x => new DropdownOptionDto
{
Options = x.Options.Split('|')
});