2009-02-09 8 views
0

Dans ma base de données, j'ai un champ contenant une liste d'e-mails délimités par des virgules. Comment est-ce que je mapperais ceci à un IList<string> dans mon modèle?Mappage Fluent-NHibernate

Répondre

0

La table en question n'est même pas la première forme normale, ce qui est mauvais.

La seule façon que vous pouvez éventuellement faire est quelque chose le long de ces lignes:

class Foo 
{  
    private List<string> emails = new List<string>();  

    public string _Emails 
    { 
     get { return string.Join(",", emails.ToArray()); } 
     set { emails = new List<string>(value.Split(',')); } 
    }  

    public IList<string> Emails 
    { 
     get { return emails; }   
    } 
} 

et propriétés de la carte _Emails.

Modifier

Une autre solution est implemention votre propre IUserType ou IUserCollection. Ainsi votre modèle sera beaucoup plus joli.

+0

Eh bien, vous n'êtes parfois pas responsable de la conception de la base de données. Votre solution fonctionnera avec quelques ajustements (le client doit également pouvoir ajouter des adresses au champ Emails), mais j'espérais un type de mappage défini par l'utilisateur. Je ne suis pas très désireux de polluer mon modèle :) – BjartN

2

Vous devez implémenter un IUserCollection, qui mapperait votre colonne CSV à une liste de courriels, puis la sérialiser lors de la sauvegarde.

Questions connexes