2008-08-21 17 views
7

Używam Linq do SQL od jakiegoś czasu i uważam, że jest naprawdę pomocny i łatwy w użyciu. W przypadku innych narzędzi ORM, z których korzystałem w przeszłości, obiekt podmiotu wypełniony z bazy danych zwykle ma właściwość wskazującą długość bazowej kolumny danych w bazie danych. Jest to pomocne w sytuacjach, w których istnieje możliwość powiązania danych, w których można ustawić właściwość MaxLength na polu tekstowym, na przykład w celu ograniczenia długości wprowadzanych danych wejściowych przez użytkownika.Linq do SQL - bazowa długość kolumny

Nie mogę znaleźć sposobu użycia Linq do SQL w celu uzyskania długości kolumny danych bazowych. Czy ktoś wie, jak to zrobić? Prosimy o pomoc.

Odpowiedz

1

Dzięki. Właściwie obie te odpowiedzi wydają się działać. Niestety, wydają się patrzeć na atrybuty Linqa generowane po generowaniu kodu. Chociaż wydaje się, że jest to słuszne, w mojej sytuacji sprzedajemy oprogramowanie, a czasami klient rozszerza niektóre kolumny, aby dopasować swoje dane. Zatem długość pola zgłaszanego przy użyciu tej techniki może nie zawsze odzwierciedlać rzeczywistą długość podstawowej kolumny danych. No cóż, nie Linq do winy SQL, prawda? :)

Dzięki za szybkie odpowiedzi!

1

Jeśli potrzebujesz znać dokładną długość kolumny, możesz samodzielnie odwołać się do klas System.Data. Coś trochę takiego:

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

}