2009-02-25 8 views
0

Exemple:CRUD sur la table avec des colonnes inconnues dans NHibernate

public class ContactMap : ClassMap<Contact> 
{ 
    public ContactMap() 
    { 
     WithTable("ida_contact"); 
     Id(x => x.ID, "ida_contact_id").WithUnsavedValue(0).GeneratedBy.UuidHex(""); 
     Map(x => x.FirstName); 
     Map(x => x.Surname); 
     Map(x => x.Address1, "dm_address_1"); 
     Map(x => x.Address2, "dm_address_2"); 
     Map(x => x.Address3, "dm_address_3"); 
     Map(x => x.Postcode, "dm_postcode"); 
     Map(x => x.City, "dm_city"); 
     Map(x => x.CountryCode, "dm_countrycode"); 
     Map(x => x.PhoneMobile, "phone_mobile"); 
     Map(x => x.PhoneHome, "phone_home"); 
     Map(x => x.Email); 
     Map(x => x.DOB); 
     Map(x => x.SMSAccept, "sms_accept"); 
     Map(x => x.EmailAccept, "email_accept"); 
     Map(x => x.UserName); 
     Map(x => x.Password); 
    } 
} 

Cette classe-mapping est restrictive que la table sera complètement différent dans certains de mes autres projets. Ce que je suis enclin à faire est de cartographier un dictionnaire où chaque élément du dictionnaire représente une colonne dans le tableau, de cette façon, il sera 100% dynamique en ce qui concerne l'ajout de colonnes dans la base de données, et je voudrais seulement pour mettre à jour le fichier mapping avec quelle table utiliser si j'intègre un système différent. Cela nécessiterait également une table avec des métadonnées pour fournir le type et les informations de validation pour répondre aux exigences de mon domaine.

Y a-t-il un moyen de faire cette cartographie dans un narguent fluent? Une certaine forme de

public class ContactMap : ClassMap<IDictionary<string, object>> 
{ 
    WithTable("Current_contactTable"); 
} 

je pense que la solution sent un peu mal difficile, donc si quelqu'un a une solution plus fortement typé ou un lien vers un amour id pour l'entendre;).

Répondre

0

Je ne pense pas qu'il existe, vous devriez créer un nouveau mappage.

Cette classe-mapping est à restrictive que la table sera complètement différent dans certains de mes autres projets .

Eh bien c'est un autre projet, une autre cartographie. Le but de fluentNH est de créer une manière fortement typée d'écrire des fichiers de mapping - c'est tout.

Votre dictionnaire n'améliorerait rien, ne devriez-vous pas réécrire les données dans le dictionnaire? (ou peut-être que j'ai mal compris quelque chose.)

Questions connexes