linq-to-sql - usando - manual de linq to sql en español
Linq a SQL-Longitud de columna subyacente (3)
He estado utilizando Linq para SQL desde hace un tiempo y me parece muy ú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.
No puedo encontrar una forma de usar Linq a SQL para obtener la longitud de una columna de datos subyacente. ¿Alguien sabe de una manera de hacer esto? Ayuda por favor.
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!
Si necesita conocer la longitud exacta de la columna, puede recurrir a las clases de 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 );
}
Usando LINQ ColumnAttribute para obtener longitudes de campo de su base de datos:
http://www.codeproject.com/KB/cs/LinqColumnAttributeTricks.aspx