Linq to SQL – длина основного столбца
-
09-06-2019 - |
Вопрос
Я уже некоторое время использую 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 );
}