2010-04-16 5 views
1

j'ai trouvé une erreur chaque fois que je fais appel oracale stordeprocedure de classe à l'aide ISession ceci est mon fichier mapppingLa clé donnée était absente dans le dictionnaire

<hibernate-mapping 
xmlns="urn:nhibernate-mapping-2.2" default-access="field" 
assembly="DataContext" namespace="DataContext" > 


<sql-query name="GetEmployeedetails" callable="true"> 
    <return alias="emp" class="empdetails" > 
     <return-property name="U_ID" column="U_ID"/> 
      <return-property name="IUSR_FIRST_NAME" column="IUSR_FIRST_NAME"/> 
       <return-property name="IUSR_LAST_NAME" column="IUSR_LAST_NAME"/> 
     <return-property name="IUSR_EMP_EMAIL_ID" column="IUSR_EMP_EMAIL_ID"/> 
      <return-property name="IUSR_MOBILE_NO" column="IUSR_MOBILE_NO"/> 
     <return-property name="IUSR_REMARKS" column="IUSR_REMARKS"/> 
      <return-property name="IUSR_LOGIN_NAME" column="IUSR_LOGIN_NAME"/> 


    </return> 
    {?=call GETEMPLOYEEDETAILS(:pr_page,:pr_userid) } 

    </sql-query> 

</hibernate-mapping> 

ceci est mon fichier de classe

amespace DataContext 
{ 
    public class empdetails 
    { 
     public int _ID; 
     private string _IUSR_FIRST_NAME; 
     private string _IUSR_LAST_NAME; 
     private string _IUSR_EMP_EMAIL_ID; 
     private string _IUSR_MOBILE_NO; 
     private string _IUSR_REMARKS; 
     private string _IUSR_LOGIN_NAME; 
     // private DateTime _IUSR_CREATED_ON; 


     //public empdetails(int U_ID, string IUSR_FIRST_NAME, string IUSR_LAST_NAME, string IUSR_LOGIN_NAME, string IUSR_EMP_EMAIL_ID, string IUSR_MOBILE_NO, string IUSR_REMARKS)//, DateTime iusrcreated) 
     //{ 
     // this._ID = U_ID; 
     // // _IUSR_FIRST_NAME = iusrfname; 
     // this._IUSR_FIRST_NAME = IUSR_FIRST_NAME; 
     // this._IUSR_LAST_NAME = IUSR_LAST_NAME; 
     // this._IUSR_LOGIN_NAME = IUSR_LOGIN_NAME; 
     // this._IUSR_EMP_EMAIL_ID = IUSR_EMP_EMAIL_ID; 
     // this._IUSR_MOBILE_NO = IUSR_MOBILE_NO; 
     // this._IUSR_REMARKS = IUSR_REMARKS; 
     // // _IUSR_CREATED_ON = iusrcreated; 

     //} 

     public empdetails() 
     { 
     } 
     public virtual int U_ID 
     { 
      get { return _ID; } 
      set { _ID = value; } 
     } 

     public virtual string IUSR_FIRST_NAME 
     { 
      get { return _IUSR_FIRST_NAME; } 
      set 
      { 
       _IUSR_FIRST_NAME = value; 
      } 

     } 
     public virtual string IUSR_LAST_NAME 
     { 
      get { return _IUSR_LAST_NAME; } 
      set 
      { 
       _IUSR_LAST_NAME = value; 
      } 

     } 
     public virtual string IUSR_LOGIN_NAME 
     { 
      get { return _IUSR_LOGIN_NAME; } 
      set 
      { 
       _IUSR_LOGIN_NAME = value; 
      } 

     } 
     public virtual string IUSR_EMP_EMAIL_ID 
     { 
      get { return _IUSR_EMP_EMAIL_ID; } 
      set 
      { 
       _IUSR_EMP_EMAIL_ID = value; 
      } 


     } 
     public virtual string IUSR_MOBILE_NO 
     { 
      get { return _IUSR_MOBILE_NO; } 
      set 
      { 
       _IUSR_MOBILE_NO = value; 
      } 

     } 
     public virtual string IUSR_REMARKS 
     { 
      get { return _IUSR_REMARKS; } 
      set 
      { 
       _IUSR_REMARKS = value; 
      } 

     } 

    } 

ma classe controleur

public ActionResult Index() 
     { 
      // OracletestModule ot=new OracletestModule(); 
      //ot.GETEMPDETAILS(17); 
      //return View(ot); 

      ISessionFactory factory = new NHibernate.Cfg.Configuration().Configure().BuildSessionFactory(); 
      using (ISession session = factory.OpenSession()) 
      { 


       var namedQuery = session.GetNamedQuery("GetEmployeedetails"); 
       namedQuery.SetParameter("pr_userid", 17); 
       // IList list = namedQuery.List(); 
       IList list = (IList)namedQuery.List(); 
       return View(); 
      } 


     } 

procédure stockée oracle

create or replace 
PROCEDURE GETEMPLOYEEDETAILS 
(
pr_page out SYS_REFCURSOR, 
pr_userid test.U_ID%TYPE 


) 
AS 
BEGIN 
open pr_page for 
select 
     U_ID, 
     IUSR_FIRST_NAME, 
     IUSR_LAST_NAME, 
     IUSR_EMP_EMAIL_ID, 
     IUSR_MOBILE_NO, 
     IUSR_REMARKS, 
     IUSR_LOGIN_NAME 

from test where U_ID= pr_userid; 
END GETEMPLOYEEDETAILS; 

plz me aider ce que je faisais erreur

merci à l'avance

+2

plus de détails sur l'erreur s'il vous plaît – Ando

Répondre

0

Cette erreur se produit généralement lorsque vous interrogez pour une classe non cartographiées. Avez-vous un fichier de mappage pour empdetails?

+0

merci pour ur rediffusion i recopié classe fichier empdetails aussi plz vérifier plz me donner une solution appropriée – sandeep

+0

Je vois la classe empdetails mais je ne vois pas un fichier de mappage NHibernate pour empdetails. Si empdetails n'est pas mappé, vous obtiendrez cette erreur. Voir cette question si vous souhaitez utiliser une requête avec une classe non mappée: http://stackoverflow.com/questions/660820/using-unmapped-class-with-nhibernate-named-query. –

+0

où créer et utiliser nhibernate fichier de cartographie plz donnez-moi un exemple merci beaucoup varier? – sandeep

0

Je résolu ce problème en supprimant tous les map.PropertyRef("Id"); qui ont été ajoutés à mes ManyToOne cartes dans mes Mapping.ByCodeClassMapping classes qui ont été créés par les NHibernate Mapping Generator

Questions connexes