2008-08-21 12 views
7

He estado utilizando Linq a SQL desde hace un tiempo y me parece realmente útil y fácil de usar. Con otras herramientas ORM que he usado en el pasado, el objeto de entidad llenado de la base de datos normalmente tiene una propiedad que indica la longitud de la columna de datos subyacente en la base de datos. Esto es útil en situaciones de enlace de datos donde puede establecer la propiedad MaxLength en un cuadro de texto, por ejemplo, para limitar la longitud de entrada ingresada por el usuario.Linq a SQL - Longitud de columna subyacente

No puedo encontrar la forma de utilizar la longitud de una columna de datos subyacente en SQL. ¿Alguien sabe de una manera de hacer esto? Ayuda por favor.

Respuesta

1

Gracias. En realidad, ambas respuestas parecen funcionar. Desafortunadamente, parecen observar los atributos de Linq generados cuando se realizó la generación de código. Aunque parece ser lo correcto, en mi situación vendemos productos de software y ocasionalmente el cliente ampliará algunas columnas para acomodar sus datos. Por lo tanto, la longitud del campo según se informa utilizando esta técnica puede no reflejar siempre la verdadera longitud de la columna de datos subyacente. Ah, bueno, no es culpa de Linq para SQL, ¿verdad? :)

¡Gracias por las respuestas rápidas!

1

Si necesita conocer la longitud exacta de la columna, puede recurrir a las clases System.Data. Algo así como esto:

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

}