/ / Gibt es eine Möglichkeit, das Größenattribut von LINQ-generierten Klassenmitgliedern abzurufen? - asp.net-mvc, linq

Gibt es eine Möglichkeit, das Größenattribut von LINQ generierten Klassenmembern zu erhalten? - asp.net-mvc, linq

Ich möchte vermeiden, manuell maximale Attribute für alle Formulareingaben anzugeben Elemente, und stattdessen Größeninformationen aus dem Datenmodell zu verwenden, wenn möglich:

z.B.

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

Ist es möglich, das DbType-Attribut in der LINQ-Klasse zu "übersetzen"?

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

Antworten:

0 für die Antwort № 1

Ja, Attribute sind durch Reflektion verfügbar:

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


0 für die Antwort № 2

Lassen Sie mich Sie auf diese Vorgehensweise bringenund hoffentlich findest du den Rest des Weges. Ich habe die Datenauswahl in eine LINQ-Anweisung gekapselt und hoffe, dass Sie sie austauschen können, je nachdem, wie Sie die Daten benötigen:

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

};

Was dies tut, ist eine Eigenschaft aus einer Tabelle auswählen,Wählen Sie dann einen neuen anonymen Typ aus. Die zweite Eigenschaft im anonymen Typ ist das im Datenmodellfeld angezeigte ColumnAttribute. Anschließend können Sie mit der Eigenschaft .DbType die maximale Länge ermitteln. Hoffe das hilft!