实体框架 Oracle:向 VARCHAR2(4000 CHAR)插入超过2000个字符失败

3
我们使用.NET Entity Framework 6.0和Oracle 12g。
当向VARCHAR2(4000 CHAR)数据库列中插入超过2000个字符时,我们会收到Oracle错误。
 ORA-01461: can bind a LONG value only for insert into a LONG column`

请问我该如何解决这个问题?


听起来很像是UTF-16/UCS-2问题。你的数据库字符集是什么? - Bacon Bits
2个回答

1
在官方文档中提到限制为:

最大尺寸:4000字节

但在实际生活中,对于双字节字符,它是2000 要解决此问题,您可以使用CLOB而不是VARCHAR2

很遗憾,CLOB 仍然受到 4000 个字符限制的问题。正如在 这里 中提到的那样。 - Antonio Buonaiuto

1
今天这个问题让我有点头疼。为了解决它而不去触及数据库,我在OnModelCreating()中添加了以下内容。 modelBuilder.Properties<string>().Configure(p => p.HasColumnType("VARCHAR2")); 如果需要的话,你也可以按实体对待来进行操作,但是对于我来说所有的字符串都被映射到了VARCHAR2,所以我选择了前者。
modelBuilder.Entity<SomeEntity>().Property(x => x.SomeProperty).IsUnicode(false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接