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.

Foi útil?

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 );

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top