Linq to SQL - длина основного столбца

Я использую Linq to SQL уже некоторое время, и я считаю, что он действительно полезен и прост в использовании. С другими инструментами ORM, которые я использовал в прошлом, объект сущности, заполненный из базы данных, обычно имеет свойство, указывающее длину столбца базовых данных в базе данных. Это полезно в ситуациях привязки данных, когда вы можете установить свойство MaxLength в текстовом поле, например, чтобы ограничить длину ввода, вводимого пользователем.

Я не могу найти способ, используя Linq to SQL, чтобы получить длину основного столбца данных. Кто-нибудь знает способ сделать это? Помоги пожалуйста.

21.08.2008 18:07:33
3 ОТВЕТА
РЕШЕНИЕ

Использование атрибута столбца LINQ для получения длин полей из вашей базы данных:

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

7
26.02.2014 19:09:50

Спасибо. На самом деле оба эти ответа, кажется, работают. К сожалению, они, похоже, смотрят на атрибуты Linq, сгенерированные, когда генерация кода была завершена. Хотя это может показаться правильным, в моей ситуации мы продаем программные продукты, и иногда заказчик расширяет некоторые столбцы для размещения своих данных. Таким образом, длина поля, сообщаемая с использованием этого метода, не всегда может отражать истинную длину основного столбца данных. Ах, ну не Linq к вине SQL, не так ли? :)

Спасибо за быстрые ответы!

2
21.08.2008 21:14:04

Если вам нужно знать точную длину столбца, вы можете обратиться к самим классам 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 );

}
1
9.09.2009 04:44:58