Try this:
<many-to-one name="oInvestmentType" column="InvestmentTypeID"
class="Tec.Core.Model.InvestmentType, Tec.Core" not-null="true"
cascade="save-update"
/>
On Monday, February 24, 2014 11:33:12 AM UTC, Veasna MUCH wrote:
>
>
> 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.