Linq to SQL - длина основного столбца - PullRequest
8 голосов
/ 21 августа 2008

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

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

Ответы [ 3 ]

7 голосов
/ 21 августа 2008

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

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

2 голосов
/ 22 августа 2008

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

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

1 голос
/ 09 сентября 2009

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...