Question

J'utilise Linq to SQL depuis un certain temps maintenant et je le trouve vraiment utile et facile à utiliser.Avec d'autres outils ORM que j'ai utilisés dans le passé, l'objet entité rempli à partir de la base de données possède normalement une propriété indiquant la longueur de la colonne de données sous-jacente dans la base de données.Ceci 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 de l'entrée saisie par l'utilisateur.

Je ne trouve pas de moyen d'utiliser Linq to SQL pour obtenir la longueur d'une colonne de données sous-jacente.Quelqu'un connaît-il un moyen de procéder?Aidez-moi, s'il vous plaît.

Était-ce utile?

La solution

Utilisation du LINQ ColumnAttribute pour obtenir les longueurs de champ de votre base de données :

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

Autres conseils

Merci.En fait, ces deux réponses semblent fonctionner.Malheureusement, ils semblent examiner 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 allonge certaines colonnes pour s'adapter à ses données.Ainsi, la longueur du champ déclarée à l'aide de cette technique peut ne pas toujours refléter la longueur réelle de la colonne de données sous-jacente.Eh bien, ce n'est pas la faute de Linq to SQL, n'est-ce pas ?:)

Merci pour les réponses rapides!

Si vous avez besoin de connaître la longueur exacte de la colonne, vous pouvez recourir aux classes System.Data elles-mêmes.Quelque chose comme ça :

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

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top