2009-09-08 43 views
0

我目前正在研究连接到基于a demo on Brad Abrams' blog的SQL Server 2008 Express数据库的Silverlight应用程序。 (注意:指定链接上的演示文件实际上是与live running application上显示的不同的解决方案。博客文章中的演示使用实体框架,而实时应用程序使用POCO)。为什么实体框架不会为nvarchar(MAX)字段返回修剪过的字符串?

我想弄清楚为什么实体框架为设置为nvarchar(MAX)的字段返回固定宽度的字符串。 (通过“固定宽度”,我的意思是像“DC”,在字符串内容的末尾有空白处)。

在与包含的MDF文件连接的演示文件中,名称字段是nvarchar(max)字段,实体框架正确地返回了修剪后的字符串。但是,在我的与SQLEXPRESS数据库连接的个人应用程序中,nvarchar(max)字段仍以最后一个空格,固定宽度和未修剪返回。在运行时将鼠标悬停在实体模型C#文件的return this._itemPrefix;行上时,它会显示带有空白区域的项目,无修剪。我无法弄清楚为什么它在他的演示中工作,但不在我的文件中。

除了改变entityModel.Designer.cs中的代码让它返回一个修剪过的字符串之外,我能做些什么吗?有没有人遇到过这个问题?

回答

4

多少个空格?我能想到的唯一原因是因为你以这种方式存储了字符串。
按预期工作。

如果您使用实体框架,您应该在存储它们之前用Trim()TrimEnd()修剪字符串。

+1

我没有想过在SQL Server数据库表中的所有值上运行RTrim()。我已经将它们的字段从nchar更改为nvarchar,但我没有考虑检查值是否仍填充。 果然,当我在服务器上用RTRIM更新这些字段时,在Entity Framework中一切都很好。谢谢你的帮助! – 2009-09-08 11:58:44

相关问题