Domanda

Utilizzo Linq to SQL ormai da un po' di tempo e lo trovo davvero utile e facile da usare.Con altri strumenti ORM che ho utilizzato in passato, l'oggetto entità riempito dal database normalmente ha una proprietà che indica la lunghezza della colonna di dati sottostante nel database.Ciò è utile nelle situazioni di associazione dati in cui è possibile impostare la proprietà MaxLength su una casella di testo, ad esempio, per limitare la lunghezza dell'input immesso dall'utente.

Non riesco a trovare un modo utilizzando Linq to SQL per ottenere la lunghezza di una colonna di dati sottostante.qualcuno conosce un modo per fare questo?Aiuto per favore.

È stato utile?

Soluzione

Utilizzo di LINQ ColumnAttribute per ottenere lunghezze di campo dal database:

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

Altri suggerimenti

Grazie.In realtà entrambe queste risposte sembrano funzionare.Sfortunatamente, sembrano guardare gli attributi Linq generati al termine della generazione del codice.Anche se sembrerebbe la cosa giusta da fare, nella mia situazione vendiamo prodotti software e occasionalmente il cliente espande la lunghezza di alcune colonne per accogliere i propri dati.Pertanto, la lunghezza del campo riportata utilizzando questa tecnica potrebbe non riflettere sempre la lunghezza effettiva della colonna di dati sottostante.Ah beh, non è colpa di Linq to SQL, vero?:)

Grazie per le risposte rapide!

Se hai bisogno di conoscere la lunghezza esatta della colonna puoi ricorrere alle classi System.Data stesse.Qualcosa del genere:

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

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top