2012-06-22 7 views
5

Mam pole nvarchar(50) w mojej tabeli. Kiedy zapisuję ciąg znaków, na przykład 12 character Length, zapisuje ciąg znaków pod numerem 50 character length. Właściwie dodaje znak spacji na końcu łańcucha. Czy powinienem wybrać inny typ danych?Znaki spacji na końcu ciągu podczas zapisywania w bazie danych

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

Kiedy zapisać ciąg bezpośrednio (w SQL Server) w polu tabeli NameFamily, wszystko jest w porządku.

+0

nie można po prostu użyć .Trim() na wartość pola tekstowego przed przypisać go do nazwy? – CSharpened

+0

Coś jeszcze musi być nie tak. Jeśli masz ciąg 12-znakowy i zapisujesz go w nvarcharze (50), baza danych nie powinna dodawać dopełnienia ze spacjami na końcu. Sprawdź dokładnie, czy rzeczywiście zapisujesz kolumnę nvarchar (50). –

+0

'tmp_Person.NameFamily' jest' string (System.String) 'w' .dbml' i problem jest po wysłaniu łańcucha znaków do zapisu w bazie danych. Zapisuję do kolumny nvarchar (50). – hamze

Odpowiedz

1

Znalazłem problem. Właśnie dodałem mój stół ponownie w pliku .dbml i wszystko poszło dobrze.

-2

Użyj tego Trim(txt_NameFamily.Text)

1

przypadku korzystania z Entity Framework, należy ustawić właściwość trueFixed Length na polach nvarchar.

Nadal można korzystać z Trim, ale jest to po prostu "naprawić" wartość textBox.Text i nie ma nic wspólnego z bazą danych.

1

Miałem ten sam problem. Usuń .IsFixedLength() z właściwości Nvarchar w klasie Mapping i mój problem został rozwiązany.

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

Zastąpiony z

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

Miał ten sam problem. Musiał to naprawić w pliku '.edmx' ustawiającym atrybut' FixedLength' na 'false' dla właściwości w odpowiednim obiekcie EntityType. Problem wystąpił, ponieważ kolumna została najpierw ustawiona na 'nchar'. – Dehalion

Powiązane problemy