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 № 1Tak, 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!