Good afternoon,

I have following database schemas

<https://lh4.googleusercontent.com/-TnjRxHcktjM/UwscRDvMOGI/AAAAAAAABx4/_6XhBJFgic4/s1600/ER+Diagram.JPG>
Here is my mapping file 

*Airport*
-----------------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
>   <class name="Tec.Core.Model.Airport, Tec.Core" table="tblAirport" 
> lazy="false">
>     <id name="ID" column="AirportID" unsaved-value="0">
>       <generator class="identity" />
>     </id>
>     <property name="AirportCode" column="AirportCode" />
>     <property name="AirportFullName" column="AirportFullName" />
>    
>     <bag name="Budgets" table="tblBudget" inverse="true" 
> cascade="save-update">
>       <key column="AirportID" />
>       <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
>     </bag>
>     
>   </class>
> </hibernate-mapping>



   * public class Airport:Entity<int> *
*    {*
*        private string _airportCode="";*
*        private string _airportFullName="";*
*        private IList<Budget> _airportBudgets = new List<Budget>();*

*        private Airport() { }*
*        public Airport(string AirportCode, string AirportFullName) {*
*            this._airportCode = AirportCode;*
*            this._airportFullName = AirportFullName; *
*        }*                
*         public  string AirportCode**  {*
*            get { return _airportCode; }*
*            set { _airportCode = value; }*
*        }*
*        public  string AirportFullName** {*
*            get { return _airportFullName; }*
*            set { _airportFullName = value; }*
*        }*
*        public IList<Budget> Budgets** {*
*            get { return new List<Budget>(_airportBudgets).AsReadOnly(); }*
*            protected set { _airportBudgets = value; }*
*        }*
*        public void AddBudget(Budget air_budget)**{*
*            if (air_budget != null && 
!_airportBudgets.Contains(air_budget)){*
*                air_budget.oAirport = this; *
*                _airportBudgets.Add(air_budget);*
*            }*
*        }*

*        public override int GetHashCode(){*
*            return (GetType().FullName + "|" + 
_airportCode.GetHashCode()).GetHashCode();*
*        }*

*    }*




InvestmentCode
--------------------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
>   <class name="Tec.Core.Model.InvestmentCode, Tec.Core" 
> table="tblInvestmentCode" lazy="false">
>     <id name="ID" column="InvestmentCodeID" unsaved-value="0">
>       <generator class="identity" />
>     </id>
>     <property name="InvCode" column="InvestmentCode" />
>     <property name="InvCodeNote" column="InvestmentCodeNote" />
>   
>     <bag name="Budgets" table="tblBudget" inverse="true" 
> cascade="save-update">
>       <key column="InvestmentCodeID" />
>       <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
>     </bag>
>     
>   </class>
> </hibernate-mapping>



 *  public class InvestmentCode: Entity<int> *
*    {*

*        private string _investmentCode="";*
*        private string _investmentCodeNote="";*
*        private IList<Budget> _lstinvestmentCodeBudgets = new 
List<Budget>();*

*        private InvestmentCode() { }*
*        public InvestmentCode(string investmentCode, string 
InvestmentCodeNote) {*
*            this._investmentCode = investmentCode;*
*            this._investmentCodeNote = InvestmentCodeNote ; *
*        }      *
*        public string InvCode {*
*            get { return _investmentCode ; }*
*            set { _investmentCode  = value; }*
*        }*
*        public string InvCodeNote {*
*            get { return _investmentCodeNote ; }*
*            set { _investmentCodeNote  = value; }*
*        }*
*        public IList<Budget> Budgets {*
*            get { return new 
List<Budget>(_lstinvestmentCodeBudgets).AsReadOnly(); }*
*            protected set { _lstinvestmentCodeBudgets = value; }*
*        }*
*        public void AddBudget(Budget investment_code_budget) {*
*            if (investment_code_budget != null && 
!_lstinvestmentCodeBudgets.Contains(investment_code_budget)){*
*                investment_code_budget.oInvestmentCode = this; *
*                _lstinvestmentCodeBudgets.Add(investment_code_budget);*
*            }*
*        }        *
*        public override int GetHashCode(){*
*            return (GetType().FullName +"|"+ 
_investmentCode.GetHashCode()).GetHashCode();*
*        }*
*    }*


InvestmentType
-------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
>   <class name="Tec.Core.Model.InvestmentType, Tec.Core" 
> table="tblInvestmentType" lazy="false">
>     <id name="ID" column="InvestmentTypeID" unsaved-value="0">
>       <generator class="identity" />
>     </id>
>     <property name="InvestmentTypeNote" column="InvestmentTypeNote" />    
>     
>     <bag name="Budgets" table="tblBudget" inverse="true" 
>  cascade="save-update">
>       <key column="InvestmentTypeID" />
>       <one-to-many class="Tec.Core.Model.Budget, Tec.Core" />
>     </bag>
>     
>   </class>
> </hibernate-mapping>



* public class InvestmentType: Entity<int> **{*
       
*        private string _investmentTypeNote="";*
*        private IList<Budget> _lstInvestmentTypeBudgets = new 
List<Budget>();*

*        private InvestmentType() { }*

*        public InvestmentType(string InvestmentTypeNote){            *
*            this._investmentTypeNote = InvestmentTypeNote ; *
*        }*
*        public string InvestmentTypeNote {*
*            get { return _investmentTypeNote ; }*
*            set { _investmentTypeNote  = value; }*
*        }*
*        public IList<Budget> Budgets {*
*            get { return new 
List<Budget>(_lstInvestmentTypeBudgets).AsReadOnly(); }*
*            protected set { _lstInvestmentTypeBudgets = value; }*
*        }*
*        public void AddBudget(Budget investment_type_budget)  {*
*            if (investment_type_budget != null && 
!_lstInvestmentTypeBudgets.Contains(investment_type_budget)){*
*                investment_type_budget.oInvestmentType = this; *
*                _lstInvestmentTypeBudgets.Add(investment_type_budget);*
*            }*
*        }*
*        public override int GetHashCode(){*
*            return (GetType().FullName + "|"+ 
_investmentTypeNote.GetHashCode()).GetHashCode();*
*        }*
*    }*


Budget
------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
>   <class name="Tec.Core.Model.Budget, Tec.Core" table="tblBudget" 
> lazy="false">
>     <id name="ID" column="BudgetID" unsaved-value="0">
>       <generator class="identity" />
>     </id>
>     <property name="BudgetAmount" column="BudgetAmount" />
>     <property name="BudgetYear" column="BudgetYear" />
>     
>     <many-to-one name="oAirport" column="AirportID"
>       class="Tec.Core.Model.Airport, Tec.Core" not-null="true" />
>     <many-to-one name="oInvestmentCode" column="InvestmentCodeID"
>       class="Tec.Core.Model.InvestmentCode, Tec.Core" not-null="true" />
>     <many-to-one name="oInvestmentType" column="InvestmentTypeID"
>       class="Tec.Core.Model.InvestmentType, Tec.Core" not-null="true" />  
>     
>   </class>
> </hibernate-mapping>



   * public class Budget:Entity<long> *
*    {*
*        private float _budgetAmount;*
*        private int _budgetYear;*
*        private InvestmentType _investmentType;*
*        private InvestmentCode _investmentCode;*
*        private Airport _airport;*

*        public Budget() { }*
*        public float BudgetAmount** {*
*            get{return _budgetAmount; }*
*            set{_budgetAmount = value;}*
*        }*        
*        public int BudgetYear** {*
*            get{return _budgetYear; }*
*            set{_budgetYear = value;}*
*        }*        
*        public Airport oAirport**{*
*            get{return _airport; }*
*            set{_airport = value;}*
*        }*        
*        public InvestmentType oInvestmentType{*
*            get{return _investmentType; }*
*            set{_investmentType  = value;}*
*        }*        
*        public InvestmentCode oInvestmentCode {*
*            get{return _investmentCode ; }*
*            set{_investmentCode = value;}*
*        }*
*        public override int GetHashCode(){*
*            return (GetType().FullName + "|" + _airport.GetHashCode() 
+"|"+ _investmentCode.GetHashCode()+"|"+ 
_investmentType.GetHashCode()).GetHashCode();*
*        }*

*    }*


And in my Default.asp.cs

I have following code : 

            Airport objA = new Airport("NA", "New Airport")
            InvestmentCode objIC = new InvestmentCode("1000", "ABCD");
            InvestmentType objIT = new InvestmentType("Capex");

            Budget objBg = new Budget();
            objBg.oAirport = objA;
            objBg.oInvestmentCode = objIC;
            objBg.oInvestmentType = objIT;
            objBg.BudgetAmount = 10000;
            objBg.BudgetYear = 2014;

            objA.AddBudget(objBg);
            AirportDao.SaveOrUpdate(objA);

            objIC.AddBudget(objBg);
*            daoFactory.**GetInvestmentCodeDao()**.Save(*objIC*);  //Error 
occur here **not-null property references a null or transient value 
Tec.Core.Model.Budget.oInvestmentType*
            

            objIT.AddBudget(objBg);            
            daoFactory.GetInvestmentTypeDao().Save(objIT);     


I have no idea what going on to these problem. I am very new to NHibernate 
and would like to start using this in my development.

Could you please guide me how to solve this problem?

Best regards,

Veasna

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to