Question

J'ai plusieurs énumérations dans ma candidature qui sont utilisés comme type de propriété dans certaines classes.

Quel est le meilleur moyen de stocker ces valeurs dans la base de données, sous forme de chaîne ou d'int?

Pour votre information, je vais également mapper ces types d'attributs en utilisant Nhibernate couramment.

Exemple de code:

public enum ReportOutputFormat
{
    DOCX,
    PDF,
    HTML
}

public enum ReportOutputMethod
{
    Save,
    Email,
    SaveAndEmail
}

public class ReportRequest
{
    public Int32 TemplateId
    {
        get { return templateId; }
        set { templateId = value; }
    }
    public ReportOutputFormat OutputFormat
    {
        get { return outputFormat; }
        set { outputFormat = value; }
    }

    public ReportOutputMethod OutputMethod
    {
        get { return outputMethod; }
        set { outputMethod = value; }
    }
}
Était-ce utile?

La solution

Les deux ont des avantages. Si vous les stockez en fonction de leur valeur Integer, vous devez être prudent lors de la modification de votre énumération ultérieurement dans votre projet. Si, d'une manière ou d'une autre, les valeurs entières des éléments d'énumération sont redéfinies, toutes vos données seront corrompues. Mais ce sera le type de données le plus rapide / le plus petit à utiliser.

Si vous utilisez la représentation sous forme de chaîne, vous ne rencontrerez pas le problème de la valeur redéfinie tant que vous ne modifiez pas le nom des éléments dans l'énumération. Toutefois, les chaînes occupent plus d’espace dans votre base de données et leur utilisation est probablement un peu plus coûteuse.

À la fin, il n’ya pas de vainqueur définitif, je suppose.

Modifier

Utiliser la valeur Integer pourrait être le meilleur moyen. Vous pouvez résoudre le problème de la «valeur redéfinie» pour les éléments d'énumération en définissant vous-même la valeur de chaque élément. En effet, une bonne suggestion de Kevin.

Autres conseils

La mise en œuvre est simple dans les deux cas et les différences de performances doivent être mineures.

Par conséquent, recherchez la signification: les chaînes sont plus significatives que les nombres , utilisez donc la chaîne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top