【发布时间】: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