使用Entity Framework Core在SQL Server中存储大字符串的最佳实践

时间:2018-08-27 22:25:25

标签: sql-server entity-framework-core

我正在寻找最佳实践,以使用Entity Framework Core将字符串列表存储到数据库中。

我的数据是一组角色,可能大约100个或更多角色,所以我有两个选择:

  1. 使用另一个表并建立一些关系。
  2. 使用一种列类型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()
        );
    });

}

1 个答案:

答案 0 :(得分:1)

从纯粹的数据建模角度来看,绝对需要将其分成单独的表中的多行。查询的类型太多,这将使单个字符串不会出现

这与您是否使用实体框架还是其他任何东西无关。