2009-07-10 12 views
1

Je suis nouveau chez Nhibernate et j'utilise Nhibernate 2.1.0 RC1. En C# je les classes suivantes:Aide nécessaire pour l'établissement Nhibernate (Parent/Enfant relation)

public class Application 
{ 
    public virtual int Id { get; set; } 
    public virtual Applicant Applicant { get; set; } 
} 

public class Applicant 
{ 
    public virtual int Id { get; set; } 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
    public virtual IList<Application> Applications { get; set; } //maybe i should use set to eliminate duplicates 
} 

Et je le schéma de base de données suivante dans SQL Server 2005:

Applications table 
{ 
    ApplicationId int PK IDENTITY NOTNULL 
    FK_ApplicantId int FK NOTNULL 
} 

Applicants table 
{ 
    ApplicantId int PK IDENTITY NOTNULL 
    FirstName string NOTNULL 
    LastName string NOTNULL 
} 

Et je le fichier de mappage NHibernate suivant:

je dois mise en correspondance bidirectionnelle:

  • 1 demandeur peut avoir> 1 application
  • 1 application appartient à 1 demandeur

Je ne sais pas comment la carte collection d'applications à Demandeur. S'il vous plaît aider. Merci! Je n'utilise pas Fluent Nhibernate car il ne semble pas encore prendre en charge Nhibernate 2.1.0 RC1.

mise à jour (la version de travail):

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="HelloWorld" 
        namespace="HelloWorld"> 

    <class name="Application" table="Applications"> 
    <id name="Id" column="ApplicationID" /> 
    <property name="Reference" /> 

    <many-to-one name="Applicant" column="ApplicantID" not-null="true"/> 
    </class> 

    <class name="Applicant" table="Applicants"> 
    <id name="Id" column="ApplicantID" /> 
    <property name="FirstName" column="FirstName" /> 
    <property name="LastName" column="LastName" /> 

    <set name="Applications" inverse="true"> <!-- good to remove this mapping --> 
     <key column="ApplicantID"/> 
     <one-to-many class="Application"/> 
    </set> 
    </class> 
</hibernate-mapping> 

Je voudrais également supprimer la collection d'application de l'objet demandeur pour réduire le changement de charge des milliers d'applications requérant déposée. Reason for this is here..

+0

Voir https://www.hibernate.org/hib_docs/nhibernate/html/example-parentchild.html –

+0

Je lis cela je vous remercie. Je posterai le fichier de mapping mis à jour après l'avoir fait. – Jeff

Répondre

1
<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="HelloWorld" 
        namespace="HelloWorld"> 

    <class name="Application" table="Applications"> 
    <id name="Id" column="ApplicationID" /> 
    <property name="Reference" /> 

    <many-to-one name="Applicant" column="ApplicantID" not-null="true"/> 
    </class> 

    <class name="Applicant" table="Applicants"> 
    <id name="Id" column="ApplicantID" /> 
    <property name="FirstName" column="FirstName" /> 
    <property name="LastName" column="LastName" /> 

    <set name="Applications" inverse="true"> 
     <key column="ApplicantID"/> 
     <one-to-many class="Application"/> 
    </set> 
    </class> 
</hibernate-mapping> 
1

Il y a quelque chose qui cloche dans votre hiérarchie. Pourquoi un candidat a-t-il une collection de demandes où chaque demande est assignée à un autre candidat? Veuillez revérifier vos objets et les relations que vous essayez de construire. Vous pouvez simplement avoir une classe Application et une classe Candidate et une application peut avoir plusieurs applications de la même façon en ayant simplement l'ID demandeur dans la classe Application et dans la base de données, vous pouvez avoir une relation plusieurs à un entre application et demandeur indiquant qu'il peut y avoir plusieurs applications liées à un candidat.

+0

J'ai besoin de la cartographie bidirectionnelle (quel est le problème avec le mappage ci-dessous?): - 1 demandeur peut avoir> 1 application - 1 demande appartient à 1 demandeur – Jeff

+0

Je comprends ce que vous dites maintenant. – Jeff

Questions connexes