2011-08-04 3 views
4

SQL varchar(max)の列があります。 LINQを使用して、64kを超える文字列を含むレコードを追加しようとすると、その値はDBに保存されません。私は単にやっている。LINQ SQLデータベースに大きな文字列(64k)が挿入されていません

test.MyString = LargeString; //(over 64k text) 
mydb.myTable.InsertOnSubmit(test); 
mydb.SubmitChanges(); 

LINQ to SQLを使用する際に制限はありますか?これを行う正しい方法は何ですか?

+1

いくつかの例外がありますか?それとも列だけが空になりますか? "test string"のような小さな文字列を割り当てるとどうなりますか? –

+1

フィールドのサイズが最近MAXに増加しましたか?もしそうなら、あなたはDBMLを再コンパイルする必要があるかもしれません。 – hspain

+0

私は何の例外も出ませんし、teカラムは空になります(NULLではありません)。私はまた私のDBMLからテーブルを削除し、テーブルを読んだ。同じ問題。 –

答えて

7

VarChar(Max)は、最大8000文字(SQL Server 2k)の文字列をサポートします。 2005年に+これはエラーを引き起こすべきではありません。

Textフィールドを使用すると便利です。 for SQL Server 2005+, VarChar(Max) is preferred

重要

ntext型、テキスト、および画像データの種類がMicrosoftSQLサーバの 将来のバージョンで削除されます。 新しい開発作業でこれらのデータ型を使用しないでください。現在、 で使用しているアプリケーションを変更する予定です。代わりに、nvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。 大規模な非Unicodeおよび Unicode文字およびバイナリデータを格納する固定および可変長のデータ型。 Unicodeデータは、UNICODE UCS-2 文字セットを使用します。

私はあなたがmydbInsertOnSubmitを呼び出し、でSubmitChangesを呼び出している気づいvarchar型&テキストデータ型

  1. SQL Server Text type vs. varchar data type
  2. MSDN: ntext, text, and image

の詳細については、これを参照してください。- このタイプミスまたはエラーの原因です。

+0

はい、誤字です。 mydb.SubmitChangesである必要があります。 –