为什么实体框架在保存到数据库时会截断字符串值?

问题描述 投票:0回答:2

我的实体框架有问题,它在保存到数据库时截断字符串值

我在 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) 中有数据库限制吗?

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

谢谢

c# string entity-framework
2个回答
9
投票

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

enter image description here


0
投票

我也有同样的问题,但是问题发生在将数据插入数据库之前,实体框架正在创建一个截断字符串的查询,调用 SaveChanges() 方法时字符串是完整的,但是在检查数据库日志后,实体框架创建的查询,字符串被截断。我已经设置了实体框架所需的参数,以便对数据库中的字段(即 VARCHAR(MAX) 字段)使用相同的值。我不知道还能做什么,字符串在我的代码中始终是完整的,但实体框架不断截断它,而我无法控制它。

© www.soinside.com 2019 - 2024. All rights reserved.