LINQ在字符串上放置不需要的尾随空格

时间:2009-12-10 08:19:53

标签: sql-server linq spaces

我对LINQ和MS SQL Server有一个非常烦人的问题。

我目前在WPF C#中制作一些软件,并使用LINQ从数据库中的数据生成类。

但是,当我从程序中更新DB中的nvarchar或varchar字段时,LINQ会在字符串中添加尾随空格!

我在这样定义的表中有一个字段:

ProductName = NVARCHAR(10)

所以,如果我这样做:

Product.Name = "Bike";
Product.Name = Product.Name.Trim();
repository.Add(Product);   // Runs an .InsertOnSubmit
repository.Save();         // Runs a .SubmitChanges

然后DB中的结果数据为“Bike [SPACE] [SPACE] [SPACE] [SPACE] [SPACE] [SPACE]”,其中[SPACE]只是一个空格(在此文本中无法写入多个空格)这里)。

为什么会这样做,如何让它停止添加那些讨厌的尾随空格?

提前致谢

3 个答案:

答案 0 :(得分:5)

如果我没记错的话我有同样的问题......这不是因为linq而是因为列类型。请尝试将其更改为VARCHAR。

答案 1 :(得分:2)

自动生成的LINQ类以下列方式定义了NVarchar字段:

[Column(Storage="_Text", DbType="NChar(20) NOT NULL", CanBeNull=false)]
public string Text
{
get
{
    return this._Text;
}
set
{
    if ((this._Text != value))
    {
        this.OnTextChanging(value);
        this.SendPropertyChanging();
        this._Text = value;
        this.SendPropertyChanged("Text");
        this.OnTextChanged();
    }
}
}

列设置应为:

[Column(Storage="_Text", DbType="NVarChar(20) NOT NULL", CanBeNull=false)]

出现问题是因为我在不重新生成LINQ类的情况下更新了SQL数据库中的类型。

答案 2 :(得分:0)

同样Nchar做同样的事情。

这些类型填充空白:Nchar和Nvarchar

我已经转换了我的数据库并更新了我的模型。全部修好了。

检查......

What is the difference between char, nchar, varchar, and nvarchar in SQL Server?

如果您不想更改模型,可以使用mssql trim功能。