我正在寻找最佳实践,以使用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()
);
});
}
答案 0 :(得分:1)
从纯粹的数据建模角度来看,绝对需要将其分成单独的表中的多行。查询的类型太多,这将使单个字符串不会出现
这与您是否使用实体框架还是其他任何东西无关。