【问题标题】:How to specify max length string if I have a default already set?如果我已经设置了默认值,如何指定最大长度字符串?
【发布时间】:2022-01-04 21:48:10
【问题描述】:

通常我可以指定.HasMaxLength(null),这将产生一个最大长度的字符串列(nvarchar(MAX))。

我认为事实上这实际上是默认值,如果你不指定长度,那么你会得到nvarchar(MAX)

但是,可以使用如下代码设置默认值:

DbModelBuilder.Properties<string>().Configure(config => config.HasMaxLength(50));

这将导致所有字符串列默认具有nvarchar(50)(最大长度为 50)。

但是,这似乎阻止了.HasMaxLength(null) 工作,我无法再选择最大长度。我也尝试说.HasMaxLength(null).HasColumnType("nvarchar(MAX)"),这适用于在数据库级别生成正确的列,但后来我发现当我的长度超过 50 个字符时,EF 仍然抛出异常。

有没有办法解决这个问题,还是我必须手动将大多数字符串列设置回.HasMaxLength(50),然后忘记与nvarchar(MAX) 不同的默认长度?

【问题讨论】:

    标签: c# entity-framework entity-framework-6


    【解决方案1】:

    我发现这里的解决方法是使用.IsMaxLength()方法。

    .IsMaxLength() 是我猜的默认值,并说“使用最大长度”(nvarchar(MAX))。

    .HasMaxLength(null)没有说使用最大长度,它说使用默认长度,默认默认长度是最大长度(调用.IsMaxLength()的结果是nvarchar(MAX))。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2017-11-26
      • 2020-09-11
      相关资源
      最近更新 更多