Linq to SQL - Comprimento da coluna subjacente
-
09-06-2019 - |
Pergunta
Já uso o Linq to SQL há algum tempo e acho que é muito útil e fácil de usar.Com outras ferramentas ORM que usei no passado, o objeto de entidade preenchido no banco de dados normalmente possui uma propriedade que indica o comprimento da coluna de dados subjacente no banco de dados.Isso é útil em situações de ligação de dados em que você pode definir a propriedade MaxLength em uma caixa de texto, por exemplo, para limitar o comprimento da entrada inserida pelo usuário.
Não consigo encontrar uma maneira de usar Linq to SQL para obter o comprimento de uma coluna de dados subjacente.Alguém sabe uma maneira de fazer isso?Ajuda por favor.
Solução
Usando o LINQ ColumnAttribute para obter comprimentos de campo do seu banco de dados:
http://www.codeproject.com/KB/cs/LinqColumnAttributeTricks.aspx
Outras dicas
Obrigado.Na verdade, ambas as respostas parecem funcionar.Infelizmente, eles parecem observar os atributos do Linq gerados quando a geração do código foi concluída.Embora isso pareça ser a coisa certa a fazer, na minha situação vendemos produtos de software e, ocasionalmente, o cliente expande o comprimento de algumas colunas para acomodar seus dados.Assim, o comprimento do campo relatado usando esta técnica pode nem sempre refletir o verdadeiro comprimento da coluna de dados subjacente.Ah, bem, não é culpa do Linq to SQL, não é?:)
Obrigado pelas respostas rápidas!
Se você precisar saber o comprimento exato da coluna, poderá recorrer às próprias classes System.Data.Algo mais ou menos assim:
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 );
}