2008-08-21 13 views
7

J'utilise Linq to SQL depuis un certain temps maintenant et je le trouve très utile et facile à utiliser. Avec les autres outils ORM que j'ai utilisés dans le passé, l'objet entité rempli à partir de la base de données a normalement une propriété indiquant la longueur de la colonne de données sous-jacente dans la base de données. Cela est utile dans les situations de liaison de données où vous pouvez définir la propriété MaxLength sur une zone de texte, par exemple, pour limiter la longueur des entrées entrées par l'utilisateur.Linq to SQL - Longueur sous-jacente de la colonne

Je n'arrive pas à trouver un moyen d'utiliser Linq to SQL pour obtenir la longueur d'une colonne de données sous-jacente. Est-ce que quelqu'un sait d'une manière de faire ceci? Aidez-moi, s'il vous plaît.

Répondre

1

Merci. En fait, ces deux réponses semblent fonctionner. Malheureusement, ils semblent regarder les attributs Linq générés lors de la génération du code. Bien que cela semble être la bonne chose à faire, dans ma situation, nous vendons des produits logiciels et, parfois, le client va étendre certaines colonnes pour accueillir leurs données. Ainsi, la longueur du champ telle que rapportée en utilisant cette technique peut ne pas toujours refléter la vraie longueur de la colonne de données sous-jacente. Eh bien, pas Linq à la faute de SQL, n'est-ce pas? :)

Merci pour les réponses rapides!

1

Si vous avez besoin de connaître la longueur exacte de la colonne, vous pouvez utiliser les classes System.Data elles-mêmes. Quelque chose un peu comme ceci:

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

}