Pregunta

He estado usando Linq to SQL desde hace algún tiempo y lo encuentro realmente útil y fácil de usar.Con otras herramientas ORM que he usado en el pasado, el objeto de entidad completado desde 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 en las que puede establecer la propiedad MaxLength en un cuadro de texto, por ejemplo, para limitar la longitud de la entrada ingresada por el usuario.

No puedo encontrar una manera de usar Linq to SQL para obtener la longitud de una columna de datos subyacente.¿Alguien sabe alguna manera de hacer esto?Ayuda por favor.

¿Fue útil?

Solución

Uso de LINQ ColumnAttribute para obtener longitudes de campos de su base de datos:

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

Otros consejos

Gracias.En realidad, ambas respuestas parecen funcionar.Desafortunadamente, parecen observar los atributos de Linq generados cuando se realizó la generación del código.Aunque eso parecería ser lo correcto, en mi situación vendemos productos de software y ocasionalmente el cliente amplía la longitud de algunas columnas para acomodar sus datos.Por lo tanto, es posible que la longitud del campo informada mediante esta técnica no siempre refleje la longitud real de la columna de datos subyacente.Ah, bueno, Linq no es culpa de SQL, ¿verdad?:)

¡Gracias por las respuestas rápidas!

Si necesita saber la longitud exacta de la columna, puede recurrir a las propias clases System.Data.Algo un poco 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 );

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top