【发布时间】:2022-11-02 05:10:12
【问题描述】:
在我的DbContext 中,我将所有字符串设置为varchar(250),但我有一些字符串标记为varchar(max)"。创建迁移后,我看到标记为 max 的表仍在创建中,最大长度为 250。
如何让我的数据注释覆盖配置生成器命令?
配置生成器:
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.Properties<string>()
.HaveColumnType("varchar(250)")
.AreUnicode(false);
}
实体:
[Column(TypeName = "varchar(max)")]
public string? AffectedColumns { get; set; }
迁移中生成的内容:
AffectedColumns = table.Column<string>(type: "varchar(250)", unicode: false, nullable: true)
【问题讨论】:
-
根据this MS docs article (for EF Core 6),我怕你不能:您还可以将属性(称为数据注释)应用于您的类和属性。数据注释将覆盖约定,但会被 Fluent API 配置覆盖。- 不确定 EF Core 中是否有任何变化7在这方面
-
配置生成器是否考虑了流畅的 API?
-
也许
HasColumnType? -
因此,我查看了您的 likk,他们在抱怨与 configurationbuilde 不同的 modlebuilder(据我所知)。所以不知道这是否适用。我将发布到 git 实验室寻求帮助
-
是的,使用
ConfigurationBuilder是流畅的 API
标签: entity-framework-core ef-core-7.0