EF 核心支持 nvarchar

EF core to support nvarchar

我有一个现有的 EF 代码优先项目,它创建了数据库,其中包含数据库中的所有 nvarchar 列。现在,出于统计目的,我正在同一个数据库上启动另一个项目。然而,这个新项目使用 EF 核心作为指向同一个数据库。当我尝试 运行 新项目时,出现以下错误。

"Data type 'VARCHAR' is not supported in this form. Either specify the length explicitly in the type name, for example as 'VARCHAR(16)', or remove the data type and use APIs such as HasMaxLength to allow EF choose the data type."

现在,由于我的数据库中已经有生产数据,所以我希望对列类型的影响最小,但仍想在我的新项目中使用 EC 核心。我有很多 nvarchar 列,所以在个人 table 上设置配置是一项艰巨的工作。谁能给我指出正确的方向?

这似乎是 EntityFrameworkCore 2.0 版本的问题:https://github.com/aspnet/EntityFrameworkCore/issues/9188

预计会在 2.1 中得到修复,因此您可能需要等到那时。

否则他们建议像这样手动修复它:

            entity.Property(e => e.Comments)
                .HasColumnName("Comments")
                .HasColumnType("nvarchar(4000)"); // <- Add this

我正在使用数据注释,它仍然有效。 [Column(TypeName = "varchar(50)")]

我可以确认它已在更高版本中修复,不确定 2.1,但它肯定在 2.2 中消失了。 https://github.com/aspnet/EntityFrameworkCore/issues/13609