C# 试图将字符串保存到oracle数据库中,但一个或多个实体的验证失败

C# 试图将字符串保存到oracle数据库中,但一个或多个实体的验证失败,c#,asp.net-mvc,oracle,entity-framework,C#,Asp.net Mvc,Oracle,Entity Framework,我试图将一个字符串保存到db中,该列保存的字符串值为VARCHAR2400字节,我在textarea中输入了一个长度为399的字符串,但这将导致问题。我使用的是实体框架和oracle,db中的字符编码是UTF8。 顺便说一句,还有一列的长度是VARCHAR21字节,我在前端输入了1个字符,效果很好。 有人知道问题是什么吗 更新: 我尝试在OracleSQL开发人员中插入相同的字符串,它可以工作。因此,我假设问题来自实体框架 更新-2: 检查了EntityValidationErrors的更多详细

我试图将一个字符串保存到db中,该列保存的字符串值为VARCHAR2400字节,我在textarea中输入了一个长度为399的字符串,但这将导致问题。我使用的是实体框架和oracle,db中的字符编码是UTF8。 顺便说一句,还有一列的长度是VARCHAR21字节,我在前端输入了1个字符,效果很好。 有人知道问题是什么吗

更新: 我尝试在OracleSQL开发人员中插入相同的字符串,它可以工作。因此,我假设问题来自实体框架

更新-2:
检查了EntityValidationErrors的更多详细信息,发现有另一个表存储该值,用于编辑记录,该列小于400字节。问题已确定,谢谢大家。

如果您查看此处,它将告诉您有关varchar的所有信息,您想知道:

基本上,根据您选择的长度,它将使用1或2个字节来跟踪该列中当前字符串的长度,因此它将存储您输入的数据的字节数加上1或2个字节

因此,如果您输入'abc',则该行中该列将使用4或5个字节


如果您使用字符15,那么即使是“abc”也会占用15个字节,因为数据是正确填充的,将占用整个15个字节。

如果您需要更多字符,我建议您使用MEDIUMTEXT或LONGTEXT。VARCHAR不是为了存储要求,只是为了如何从数据库中检索数据;这应该可以告诉您要插入的字符串的实际长度。这个问题是为Oracle标记的-因此,对MySQL手册的引用似乎不合理。它具有相同的行为。