Я приведу вам пример, который вы можете попробовать, но это просто быстрое решение , поскольку вы не проектировали структуру базы данных.
Элемент перечисления:
public enum Title
{
Mr,
Mrs,
Miss,
Chief
}
По умолчанию Title.Mr
должно иметь значение по умолчанию 0
, Mrs
имеет значение 1
..., то же самое, что и остальные.
Если в перечислении 256 элементов или меньше, вы можете попробовать:
public enum Title : byte
{
Mr = 0,
Mrs = 1,
Miss = 2,
Chief = 3
}
Title.Mr
все еще имеет значение 0
.
Сущность:
public class Users_Accounts
{
[Key]
public int AccountID { get; set; }
public Guid UniqueID { get; set; }
//You can change the returned type of `Title` property from `Title` to `string` here
public string Title { get; set; }
public string First_Name { get; set; }
public string Last_Name { get; set; }
}
Модель:
public class AddUserViewModel
{
public Title Title { get; set; }
public string First_Name { get; set; }
public string Last_Name { get; set; }
}
При обновлении в базу данных вам необходимо преобразовать enum в строку:
public IActionResult AddUser(AddUserViewModel model)
{
// title contains value like: 0, 1, 2... as string
string title = ((int)model.Title).ToString();
var user = new Users_Accounts
{
AccountID = ...
UniqueID = ...
Title = title,
First_Name = model.First_Name,
Last_Name = model.Last_Name
};
_dbContext.UserAccounts.Add(user);
_dbContext.SaveChanges();
}
Когда вы получите пользователя, вы можете преобразовать Title
как строку в enum:
var user = _dbContext.UserAccounts.SingleOrDefault(x => x.AccountID == 1);
Title userTitle = (Title)Convert.ToInt32(user.Title);
userTitle
вернется Title.Mr
или Title.Mrs
...
ПРИМЕЧАНИЕ: Если вы решите использовать
public enum Title : byte {}
Вам необходимовместо Convert.ToInt32
вместо Convert.ToByte
.