2012-06-22 38 views
5

Tôi có trường nvarchar(50) trong bảng của mình. Ví dụ: khi tôi lưu một chuỗi với 12 character Length, nó sẽ lưu chuỗi với 50 character length. Trên thực tế nó thêm một ký tự khoảng trắng ở cuối chuỗi. Tôi có nên chọn loại dữ liệu khác không?Ký tự khoảng trắng ở cuối chuỗi khi lưu vào cơ sở dữ liệu

tmp_Person.NameFamily = txt_NameFamily.Text.Trim(); 
PersonKBBSHDataContext.PersonInfos.InsertOnSubmit(tmp_Person); 
PersonKBBSHDataContext.SubmitChanges(); 

Khi tôi tiết kiệm một chuỗi trực tiếp (trong SQL Server) trong NameFamily lĩnh vực của bảng, mọi thứ đều tốt.

+0

Cant bạn chỉ cần sử dụng .Trim() trên giá trị hộp văn bản trước khi bạn gán nó vào tên? – CSharpened

+0

Cái gì khác phải sai ở đây. Nếu bạn có một chuỗi 12 chr và bạn lưu nó vào một nvarchar (50), cơ sở dữ liệu không nên thêm đệm với không gian ở cuối. Kiểm tra kỹ xem bạn có thực sự lưu vào cột nvarchar (50) hay không. –

+0

'tmp_Person.NameFamily' là' string (System.String) 'trong' .dbml' và vấn đề là sau khi tôi gửi chuỗi để lưu vào cơ sở dữ liệu. Tôi đang tiết kiệm cho nvarchar (50) cột. – hamze

Trả lời

1

Tôi đã tìm thấy sự cố. Tôi chỉ cần thêm lại bảng của mình trong tệp .dbml và mọi thứ đều ổn.

-2

Sử dụng này Trim(txt_NameFamily.Text)

1

Nếu sử dụng khung Entity, thiết lập Fixed Length tài sản để true trên lĩnh vực nvarchar của bạn.

Bạn vẫn có thể sử dụng Trim tuy nhiên đó chỉ là 'sửa' giá trị textBox.Text và không liên quan gì đến cơ sở dữ liệu.

1

Tôi gặp sự cố tương tự. Loại bỏ .IsFixedLength() từ thuộc tính Nvarchar trong lớp Bản đồ và vấn đề của tôi được giải quyết.

Me.Property(Function(t) t.Description).IsFixedLength().HasMaxLength(500) 

Thay thế bằng

Me.Property(Function(t) t.Description).HasMaxLength(500) 
+0

Có cùng vấn đề. Đã phải sửa nó trong '.edmx' tập tin' FixedLength' thuộc tính 'false' cho thuộc tính trong EntityType có liên quan. Vấn đề xảy ra vì cột được đặt thành 'nchar' trước. – Dehalion