/ / Czy jest jakiś sposób na uzyskanie atrybutu size od członków klasy wygenerowanych przez LINQ? - asp.net-mvc, linq

Jakikolwiek sposób uzyskania atrybutu rozmiaru z LINQ wygenerował członków klasy? - asp.net-mvc, linq

Chciałbym uniknąć ręcznego określania atrybutów maxlength dla wszystkich danych wejściowych formularza elementy, a zamiast tego, jeśli to możliwe, użyć informacji o rozmiarze z Modelu danych:

na przykład

<%= Html.TextBox("Titel", ViewData.Model.Titel, (object)new { @maxlength = "10" })%>

czy byłoby możliwe „przetłumaczenie” atrybutu DbType w klasie LINQ?

[Column(Storage="_Titel", DbType="NVarChar(10)")]
public string Titel

Odpowiedzi:

0 dla odpowiedzi № 1

Tak, atrybuty są dostępne poprzez odbicie:

http://msdn.microsoft.com/en-us/library/aa288454(VS.71).aspx#vcwlkattributestutorialanchor3


0 dla odpowiedzi nr 2

Pozwól, że wprowadzę cię w ten sposób działaniai mam nadzieję, że znajdziesz resztę drogi. Osadziłem dane select w instrukcji LINQ i mam nadzieję, że możesz je zamienić na dowolne dane:

var q = from myDatabaseRow in dbContext.TableName
select new
{
myDatabaseRow.FieldName,
(ColumnAttribute)TypeDescriptor.GetProperties(myDatabaseRow.GetType())["FieldName"].Attributes[typeof(ColumnAttribute)]

};

W tym celu należy wybrać właściwość z tabeli,a następnie wybierz nowy anonimowy typ. Druga właściwość w typie anonimowym to ColumnAttribute widoczny w polu modelu danych. Następnie możesz użyć właściwości .DbType, aby znaleźć maksymalną długość. Mam nadzieję że to pomoże!