2009-12-10 30 views
3

我对LINQ和MS SQL Server有一个非常恼人的问题。我现在在WPF C#中制作一些软件,并使用LINQ从数据库中的数据生成类。LINQ将不需要的尾随空格放在字符串上

但是,当我从程序中更新数据库中的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所得到的数据为“自行车[SPACE] [SPACE ] [SPACE] [SPACE] [SPACE] [SPACE]“其中[SPACE]只是一个空格(在这里不能写多个空格)。

它为什么这样做,我该如何让它停止添加那些恼人的尾随空格?

在此先感谢

+3

您确定它不是NCHAR(10)字段吗? – Guffa 2009-12-10 08:29:44

回答

2

以下列方式定义的数据类型为nvarchar的字段自动生成的LINQ类:

[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)] 

的问题,因为我在更新的类型SQL数据库而不重新生成LINQ类。

5

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

+0

正如我在我的问题中写的,数据库IS使用NVarChar。但是,我发现了这个问题。 – 2010-01-05 12:46:38