EF核心支持nvarchar

时间:2017-04-30 14:58:10

标签: entity-framework nvarchar

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

&#34;数据类型&#39; VARCHAR&#39;此表单不支持。在类型名称中明确指定长度,例如&#39; VARCHAR(16)&#39;,或者删除数据类型并使用诸如HasMaxLength之类的API以允许EF选择数据类型。&#34; < / p>

现在,因为我已经在数据库中有生产数据,所以我想对列类型产生最小的影响,但仍然想在我的新项目中使用EC核心。我有很多nvarchar列,因此在单个表上设置配置是一项艰巨的任务。任何人都能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:3)

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

假设在2.1中修复,所以你可能要等到那时。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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