Frage

habe ich eine Komponente mit einer Reihe von Eigenschaften, die verschiedene Attribute

haben

Normalerweise, wenn diese Attribute zu einem einfachen alten Domain-Objekt hinzugefügt werden, werden sie durch meine benutzerdefinierte AttributeConventions aufgenommen.

Für die Komponenteneigenschaften sind sie nicht. Gibt es eine zusätzliche Verkabelung für diese benötigt?

z.

public class Component
{
    [Length(Max=50)]
    public virtual string Name {get; set;}
}

public class MyClass
{
    public virtual Component Component {get; set;}

    [Length(Max=50)]
    public virtual string Color {get; set;}
}

Ich habe eine Tabelle MyClass mit Spalten Farbe bekommen & Component

Die Farbe ist ein nvarchar (50), während Component ein nvarchar (255) (Standardeinstellung)

War es hilfreich?

Lösung

OK so auf dem eingebauten magischen verlassen, dass Verbindungen der NHibernate.Validators LengthAttribute auf die Länge Ihrer Tabellenspalte scheint keine gute Idee zu sein. Die Magie ist, dass für Moorstandardklassen dies wird natürlich von Fluent abgeholt. Um sie zu zwingen, ich habe meine eigene Konvention erstellt es zu handhaben:

public class LengthConvention : AttributePropertyConvention<LengthAttribute>
    {
        protected override void Apply(LengthAttribute attribute, IPropertyInstance instance)
        {
            // override the default column length
            if (attribute.Max != default(int)) instance.Length(attribute.Max);
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top