2009-10-07 4 views
1

donc ma base de données a une colonne qui est une liste seperated par des virgules catégorie les ID, comme:Confus comment configurer ma classe, do't souhaitez exposer une liste seperated par des virgules, seule une collection

« 1,234,234,23,343 , 53 "

Ma classe aura une propriété List qui exposera ces ID dans un formulaire de collection.

Si quelqu'un veut ajouter un CategoryID, ils font juste:

myList.Add (234); MAIS, quand il est temps d'enregistrer dans la base de données, je devrai convertir la collection en une liste séparée par des virgules.

Quelle est la meilleure façon de faire cela? devrais-je rendre privée la liste des entiers séparés par des virgules?

+4

Est-ce une nouvelle base de données? Je suggère fortement de normaliser le schéma si vous pouvez faire les valeurs discrètes par rapport à une liste. – Joe

Répondre

3

J'autoriserais l'accès via une seule méthode. C'est plus propre et évite les erreurs. Donc oui, rends la liste des entiers privée.

En fait, n'ont pas une liste d'entiers. Avoir une collection d'entiers et ne les convertir en une chaîne que lorsque vous réécrivez dans la base de données. Si vous le devez, remplacez la méthode .toString() collections pour fournir la liste des entiers sous la forme d'une liste séparée par des virgules. C'est que vous pouvez obtenir votre liste facilement, mais les gens ne peuvent pas le faire avec.

2

Quelque chose comme cela devrait faire ce que vous cherchez:

public class SomeClass 
{ 
    public List<int> CategoryIDList { get; private set; } 

    public void UpdateToDatabase() 
    { 
     string categoryIdList = ConvertIntListToString(this.CategoryIDList); 
     // TODO Update Database. 
    } 

    private static string ConvertIntListToString(List<int> intList) 
    { 
     return string.Join(",", intList.Cast<string>().ToArray()); 
    } 
} 
0

Cela dépend vraiment du but de la classe.

Si la classe est conçue pour contenir uniquement les ID, vous pouvez vouloir hériter de List et ajouter des méthodes de lecture à partir de la base de données et d'enregistrement dans la base de données.

Si la classe contient plus d'informations que les ID, une liste privée est votre meilleure option.

Questions connexes