8

しばらくの間、Linq to SQL を使用してきましたが、非常に便利で使いやすいことがわかりました。私が過去に使用した他の ORM ツールでは、通常、データベースから入力されたエンティティ オブジェクトには、データベース内の基になるデータ列の長さを示すプロパティがあります。これは、たとえば、ユーザーが入力した入力の長さを制限するために、テキスト ボックスに MaxLength プロパティを設定できるデータ バインディングの状況で役立ちます。

Linq to SQL を使用して基になるデータ列の長さを取得する方法が見つかりません。これを行う方法を知っている人はいますか?助けてください。

4

3 に答える 3

7

LINQ ColumnAttribute を使用してデータベースからフィールド長を取得する:

http://www.codeproject.com/KB/cs/LinqColumnAttributeTricks.aspx

于 2008-08-21T18:11:20.003 に答える
2

ありがとう。実際、これらの答えは両方ともうまくいくようです。残念ながら、彼らはコード生成が行われたときに生成された Linq 属性を見ているようです。それは正しいことのように思えますが、私の状況では、ソフトウェア製品を販売しており、顧客がデータを収容するために一部の列の長さを拡張することがあります。したがって、この手法を使用して報告されるフィールドの長さは、基になるデータ列の実際の長さを常に反映しているとは限りません。まあ、Linq to SQL のせいじゃないよね?:)

素早い回答ありがとうございます。

于 2008-08-21T21:14:04.153 に答える
1

正確な列の長さを知る必要がある場合は、System.Data クラス自体に頼ることができます。このようなもの:

var context = new DataContextFromSomewhere();
var connection = context.Connection;
var command = connection.CreateCommand( "SELECT TOP 1 * FROM TableImInterestedIn" );
var reader = command.ExecuteReader();
var table = reader.GetSchemaTable();

foreach( var column in table.Columns )
{
    Console.WriteLine( "Length: {0}", column.MaxLength );

}
于 2009-09-09T04:44:58.357 に答える