Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top