如果我已经设置了默认值,如何指定最大长度字符串?
Posted
技术标签:
【中文标题】如果我已经设置了默认值,如何指定最大长度字符串?【英文标题】: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)
不同的默认长度?
【问题讨论】:
【参考方案1】:我发现这里的解决方法是使用.IsMaxLength()
方法。
.IsMaxLength()
是我猜的默认值,并说“使用最大长度”(nvarchar(MAX)
)。
.HasMaxLength(null)
没有说使用最大长度,它说使用默认长度,默认默认长度是最大长度(调用.IsMaxLength()
的结果是nvarchar(MAX)
)。
【讨论】:
以上是关于如果我已经设置了默认值,如何指定最大长度字符串?的主要内容,如果未能解决你的问题,请参考以下文章