使用实体框架核心在 SQL Server 中存储大型字符串的最佳做法



我正在寻找使用实体框架核心将字符串列表存储到数据库中的最佳实践。

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

  1. 使用另一个表并建立某种关系。
  2. 使用一种列类型nvarchar(max)并按;分隔角色

我需要知道哪种方式更好,为什么?

现在,我的代码使用选项 2 来存储数据和实体框架值转换器;分隔符从列表转换为字符串,反之亦然。

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()
);
});
}

从纯粹的数据建模的角度来看,绝对需要将其拆分为单独表中的多行。有如此多的查询类型,这将允许单个字符串不会

这与使用实体框架还是其他任何内容无关。

最新更新