Я ищу лучшую практику для сохранения списка строк в базе данных с использованием Entity Framework Core.
Мои данные - это набор ролей, может быть, около 100 или более ролей, поэтому у меня есть два варианта:
- Используйте другую таблицу и установите некоторые отношения.
- Используйте один тип столбца
nvarchar(max)
и разделите роли на ;
Мне нужно знать, какой путь лучше и почему?
Пока мой код использует опцию 2 для хранения данных и конвертер значений Entity Framework для преобразования из списка в строку с разделителем ;
и наоборот.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>(c =>
{
c.Property(f => f.Roles).HasConversion
(
v => String.Join(";", v),
v => v == null ? new List<string>() : v.Split(';', StringSplitOptions.None).ToList()
);
});
}