2011-01-25 3 views
1

Je rencontre des problèmes pour trouver la syntaxe de mappage FluentNHibernate appropriée pour les objets de modèle de données et de domaine suivants. Voici le modèle de données Je travaille contre: enter image description hereAide de la syntaxe de mappage FluentNHibernate requise

Et je suis en train de cartographier les objets de domaine suivants à ce modèle:

namespace FluentNHibernateSandbox.Entities 
{ 
    public abstract class EntityBase 
    { 
     public virtual long Id { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Attribute : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual Group Group { get; set; } 
     public virtual Editor Editor { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Group : EntityBase 
    { 
     public virtual string Name { get; set; } 
     public virtual string Label { get; set; } 
     public virtual string Description { get; set; } 
     public virtual int SortOrder { get; set; } 
     public virtual IList<Attribute> Attributes { get; set; } 
    } 
} 

namespace FluentNHibernateSandbox.Entities 
{ 
    public class Editor : EntityBase 
    { 
     public virtual string ViewName { get; set; } 
     public virtual string WorkerClassName { get; set; } 
    } 
} 

En général, ce que je veux en fin de compte ne semble pas ça devrait être difficile à faire, mais après avoir essayé à peu près toutes les combinaisons de cartographies auxquelles je peux penser, je n'arrive toujours pas à bien faire les choses. J'ai juste besoin de mon attribut pour avoir une référence au groupe auquel il appartient et une référence à l'éditeur qui lui est assigné, et chaque groupe devrait avoir une collection des attributs qui en font partie. Le couple de tables jointes many-to-many est ce qui semble me donner des ajustements. En particulier la table APPLICATION_ATTRIBUTE. En fin de compte, je ne veux que les attributs de mon application, dans ce cas, ceux avec un APPLICATION_ID de 4.

Toute aide serait grandement appréciée. Merci.

Répondre

2

Vraiment un peu surpris personne n'a répondu à ce à tout, mais de toute façon. La réponse/solution pour cette situation de cartographie que nous avons trouvée, que j'essayais d'éviter pour commencer, mais qui s'est révélée être la meilleure façon de procéder, était de créer des vues personnalisées dans la base de données qui réunissait tous les données spécifiques à l'application dont j'avais besoin, puis mappé juste les objets de domaine de mon application à ces vues. Cela a fonctionné au moins partiellement parce que l'information dont j'avais besoin de ces tables allait être en lecture seule pour cette application, mais même si j'avais besoin d'écrire sur les tables, je suis sûr (mais je n'ai pas vérifié comme je l'ai fait) J'ai vraiment besoin dans ce cas) que j'aurais pu configurer mon point de vue pour qu'il soit accessible en écriture et cela aurait fonctionné aussi.

Hat tip to @robconery.

+0

LOL c'est inestimable. Bon pour vous pour faire ce qui fonctionne - c'est la chose importante. –