【问题标题】:Why does Entity Framework truncate string value while saving into database?为什么实体框架在保存到数据库时会截断字符串值?
【发布时间】:2017-04-11 03:19:49
【问题描述】:

我遇到了 Entity Framework 的问题,它在保存到数据库时会截断字符串值

我在 SQL Server 2014 中有数据库列 Description nvarchar(max),在我的模型类中有这样的属性:

public string Description { get; set; }

我用这段代码插入数据库

db.EnitityName.Add(object);
db.SaveChanges();

正常情况下可以保存记录,没有问题,但是当Description属性中字符串超过40k字符时,保存的值会被截断到40k以上的最后一个字符。

例如,我们有一个 50k 字符的字符串,它只保存前 40k 个字符并截断最后 10k 个字符。

是我做错了什么,还是实体框架对字符串长度有限制,或者在 nvarchar(max) 中有数据库限制?

请帮助我,提前感谢您的宝贵时间。

谢谢

【问题讨论】:

  • 如何确定其余部分丢失了? EF 对字符串长度没有限制。
  • 谢谢,好点,当我看到数据库值它不完整的字符串时,它被截断了。这就是问题所在,如果我发送 2-3k 字符串将其全部保存在数据库中,您现在可能会得到更好的主意。
  • 但是如何检查呢?直接用工具查询数据库?另一个 C# 代码?还有什么?简单地询问长度有什么用?
  • 在sql查询中使用select语句或者直接在数据库中打开。两种方式我都检查。
  • 你在Sql Server Management studio中被选中了吗?这确实对您选择的内容有长度限制。尝试select len(Description) from EnitityName 并以这种方式检查大小。

标签: c# string entity-framework


【解决方案1】:

我遇到了同样的问题,但结果是 SQL Server Management Studio 截断了数据,而不是实体框架(正如 Scott Chamberlain 在 cmets 中所说)。通过转到 Query->Query Options 来更改它):

【讨论】:

  • 有类似的问题。正在将一些 356k 字符保存到列中,当查询时 - 我们也只会看到 ~65XXX 字符。以上修复工作完美。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多