2010-07-24 6 views
1

la base de données a deux table, l'un est mb_user table et l'autre est mb_comment table.Un utilisateur a des commentaires.When j'insère un commentaire dans mb_comment, le comment_user_id de mb_comment est null.Je peux 't enregistrer la valeur de comment_user_id.S'il vous plaît aidez-moi!NHibernate enregistrer l'objet, une colonne est null

fichier carte mb_user fichier Plan

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MiserBlogData" namespace="MiserBlogData.Entities" default-lazy="false"> 
    <class name="A_Person" table="mb_user" discriminator-value="0"> 
    <id name="Id" column ="user_id" > 
     <generator class ="native"/> 
    </id> 
    <discriminator column="user_role" type="int" /> 
    <property name="State" column="user_state" /> 
    <property name ="Name" column="user_name" /> 
    <property name ="Pwd" column="user_pwd" /> 
    <property name ="CDate" column="user_cdate" /> 
    <property name ="UDate" column="user_udate" /> 
    <property name ="Role" column="user_role" /> 
    <property name ="Face" column="user_face" /> 
    <bag name="CommentList" > 
     <key column="comment_user_id" foreign-key="FK_PersonComment" /> 
     <one-to-many class="Comment" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

fichier mb_comment Carte

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MiserBlogData" namespace="MiserBlogData.Entities"> 
    <class name ="Comment" table="mb_comment"> 
    <id name="Id" column ="comment_id"> 
     <generator class ="native"/> 
    </id> 
    <property name ="ArticleId" column="comment_article_id" /> 
    <property name ="Content" column="comment_content" /> 
    <property name ="State" column="comment_state" /> 
    <property name ="CDate" column="comment_cdate" /> 

    <many-to-one name="Person" column="comment_user_id" class="A_Person" not-null="true" foreign-key="FK_PersonComment" /> 
    </class> 
</hibernate-mapping> 

code C#

protected ISession _session = NHibernateHelper.GetCurrentSession(); 

    public virtual object Save<T>(T obj) where T : class 
    { 
     return _session.Save(obj); 
    } 

erreur: propriété non-nulle référence à un valueMiserBlogData.Entities.Comment.Person

nulle ou transitoire je sais, si je retire non null = "true" dans le fichier mb_comment, le système est good.But colonne comment_user_id est nulle .Comment résoudre?

Répondre

1

Vous devez affecter la propriété Person sur votre Comment à une instance valide A_Person. Ensuite, NHibernate saura quel identifiant d'utilisateur écrire dans la table.

Questions connexes